题解 | #求1+2+3+...+n#

求1+2+3+...+n

http://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1

描述

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

解题思路

不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C),因为题目划定了很多限定条件,那么就需要另辟蹊径

递归 时间复杂度O(n) ,空间复杂度O(n)

从1加到n使用递归算法

    public static int Sum_Solution(int n) {
        if(n <= 0){
            return n;
        }
        return Sum_Solution(n-1) +n;
    }

公式推演 时间复杂度O(n) ,空间复杂度O(1)

1+2+3+...+n平常的解题思路来说可以使用(n+1)*n/2来得出结论,但是限定不能使用乘除法,那么可以使用(n+图片说明 ) >>1来代替

    public static int Sum_Solution(int n) {
      return (int)(Math.pow(n,2)+n) >> 1;
    }
全部评论

相关推荐

头像 会员标识
02-19 13:42
门头沟学院 Java
运气爆棚福星高赵:清✌️不用很在意项目,八股算法是重点,八股算法说的过去绝对要您
点赞 评论 收藏
分享
03-05 15:13
运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务