1-寻找数组的中心下标

1题目描述

在这里插入图片描述

2解答

2.1我的解答

  1. 我的解答代码如下:

    class Solution(object):
        def pivotIndex(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            length=len(nums)
            for i in range(0,length):
                sum_1=sum(nums[:i])
                sum_2=sum(nums[i+1:])
                if sum_1==sum_2:
                    return i
            return -1
    
  2. 执行结果如下:

    在这里插入图片描述

    在这里插入图片描述

2.2参考答案

  1. 参考答案如下:

    class Solution(object):
        def pivotIndex(self, nums):
            left=0
            all=sum(nums)
            for i in range(len(nums)):
                 if left*2==all-nums[i]:
                    return i
                 else:left+=nums[i]
            return -1
    
  2. 执行结果如下图:执行时间比我的快

    在这里插入图片描述

  3. 分析快的原因:

    1. 参考代码主要基于一个公式结论,如下图所示:

      在这里插入图片描述

    2. 有了这个结论,意味着sum()函数只需要求一次(我的代码里面每个循环都需要计算),取而代之的是累加器left+=nums[i],复杂度低。

    3. 因此,尽管我们都只是一层循环,但是我的执行时间长

    4. 因此,在算法实现的时候,能够推导出的简化公式有助于缩短代码执行时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值