1+2+3+....n的和

文章介绍了Python中计算1到n累加的两种方法,一种是通过循环累加,另一种是利用数学公式。通过时间复杂度分析,展示了数学公式解法具有更高的效率,其时间复杂度为O(1),而循环解法的时间复杂度为O(n)。时间复杂度是衡量算法效率的重要指标,可以帮助选择更优的实现方式。
摘要由CSDN通过智能技术生成

这个对于程序员来说, 无外乎做个循环,然后累加

def solution(n):
  result = 0
  for i in xrange(n):
    result += (i + 1)
  return result

看起来很轻松就搞定了, 但是这个有90%程序员不知道的算法(包括我,不过现在知道了)

就是这个

def solution(n):
  #  在python中//是向下取整的意思..
  result = n * (n + 1) // 2
  return result

这是一个小技巧,但是运算的速度却千差万别. 对于这个差别,有个说法,叫时间复杂度.

    在软件工程中,时间复杂度是一种衡量算法效率的方式,它描述了算法的运行时间如何随着问题规模的增加而增加。

    它通常表示为O(f(n)),其中f(n)是一个函数,表示算法的时间随着问题规模n的增加而增加的速度。通常来说,问题规模越大,算法所需的时间就越长。

    时间复杂度可以用来比较两个算法的效率,以便在实现特定功能时选择更好的算法。

    常见的时间复杂度有常数时间O(1),对数时间O(log n),线性时间O(n),二次时间O(n²),三次时间O(n³)等。通常来说,时间复杂度越小,算法的效率越高。

    在进行时间复杂度分析时,需要考虑最坏情况下的运行时间。这是因为最坏情况下的运行时间提供了算法在最不利情况下的运行时间。通常情况下,时间复杂度分析不考虑常数因子,只考虑规模最大的部分,因为这部分通常对运行时间的影响最大。

    再看一下之前的代码

def solution(n):
  result = 0  # 时间复杂度:O(1)
  for i in xrange(n):  # 时间复杂度:O(n),因为循环次数与输入n成正比
    result += (i + 1)  # 时间复杂度:O(1),加法和赋值操作的时间复杂度均为常数级别
  return result  # 时间复杂度:O(1)

    我们可以看到这段代码中的每一部分的时间复杂度。为了计算整体时间复杂度,我们需要将循环体内的时间复杂度(O(1))乘以循环的次数(O(n)),然后再加上其他部分的时间复杂度(O(1))。

    因此,整体时间复杂度为:O(1) + O(n) * O(1) + O(1) = O(n)。

def solution(n):
  result = n * (n + 1) // 2  # 时间复杂度:O(1),因为这里的乘法、加法和除法操作都是常数级别的
  return result  # 时间复杂度:O(1)

    整体时间复杂度为:O(1) + O(1) = O(1)。

    这个解法利用了数学公式计算累加求和,因此不需要遍历,时间复杂度降为常数级别。

    所以, 从1.......+ n 的算法, 你也学会了吗?

    时间复杂度, 可以专门学习下..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值