1题目描述
2解答
2.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参考答案
-
参考答案如下:
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
-
执行结果如下图:执行时间比我的快
-
分析快的原因:
-
参考代码主要基于一个公式结论,如下图所示:
-
有了这个结论,意味着
sum()
函数只需要求一次(我的代码里面每个循环都需要计算),取而代之的是累加器left+=nums[i]
,复杂度低。 -
因此,尽管我们都只是一层循环,但是我的执行时间长
-
因此,在算法实现的时候,能够推导出的简化公式有助于缩短代码执行时间。
-