博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer 47. 求1 + 2 + 3 + .... + n
阅读量:3915 次
发布时间:2019-05-23

本文共 816 字,大约阅读时间需要 2 分钟。

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

题目描述

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

思路一:

使用 && 运算符实现 if(n != 0)条件判断,因为 Java 的双与运算符左右两边都必须是 boolean 类型,所以右边加一个 “== 0”, 并且 Java 的表达式不能单独存在,所以把 && 的结果返回给一个变量

1 public class Solution {2     public int Sum_Solution(int n) {3         int sum = n;4         boolean flag = ((n != 0) && (sum += Sum_Solution(n - 1)) == 0);5         return sum;6     }7 }

复杂度分析

空间复杂度:取决于栈的深度, 为O(n)

时间复杂度:O(n)

思路二:

利用求和公式和 pow() 函数

1 + 2 + ... + n = n * (n + 1) / 2 = (n^2 + n) / 2

所以 1 + 2 + ... + n = ( pow(n, 2) + n) / 2;

1 class Solution {2     public int sumNums(int n) {3         4         // n*(n+1)/2 ==> (n^2 + n)/2, 除运算用右移运算符代替5         int temp = (int)Math.pow(n, 2) + n;6         return temp >> 1;7     }8 }

复杂度分析:

空间复杂度和时间复杂度都O(1), 但是这个写法其实有点违规,因为pow函数其实内部用到了乘法运算

转载地址:http://gidrn.baihongyu.com/

你可能感兴趣的文章
【翻译】.NET 5 Preview 1 发布
查看>>
使用GUI工具Portainer.io管控Docker容器
查看>>
Abp vNext发布v2.3!
查看>>
.NET Core开发实战(第27课:定义Entity:区分领域模型的内在逻辑和外在行为)--学习笔记...
查看>>
BeetleX之vue-autoui自匹配UI插件
查看>>
.NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记...
查看>>
如何用 Blazor 实现 Ant Design 组件库?
查看>>
DotNetCore Web应用程序中的Session管理
查看>>
从业务需求抽象成模型解决方案
查看>>
Kafka
查看>>
Magicodes.IE 2.2发布
查看>>
应用交付老兵眼中的Envoy, 云原生时代下的思考
查看>>
.NET 开源项目 StreamJsonRpc 介绍[上篇]
查看>>
.NET Core微服务开发选项
查看>>
探讨NET Core数据进行3DES加密或解密弱密钥问题
查看>>
Vue 3拖更,尤雨溪介绍最新进展
查看>>
如何利用.NETCore向Azure EventHubs准实时批量发送数据?
查看>>
WPF 框架全构建环境虚拟机硬盘分享
查看>>
ABP框架 v3.0 已发布!
查看>>
使用.Net Core实现的一个图形验证码
查看>>