题目
- 给你一个数组
nums
。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i])
。 - 请返回
nums
的动态和。
示例 1:
输入:nums = [1,2,3,4]
输出:[1,3,6,10]
解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。
示例 2:
输入:nums = [1,1,1,1,1]
输出:[1,2,3,4,5]
解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。
示例 3:
输入:nums = [3,1,2,10,1]
输出:[3,4,6,16,17]
solution one
- 思路:第三行
runningSum = nums.copy()
这样能使runningSum
和nums
一样,但是加上了.copy()
之后,可以使runningSum
在变化其元素数值时,不会改变nums
。第五行runningSum[i] = sum(nums[0:i], nums[i])
,若i=3
,则sum(num[0:i])
只能计算的nums[0]+nums[1]+nums[2]
,所以还要在sum()
中加入nums[i]
,即nums[3]
。 - 执行用时:44 ms, 在所有 Python3 提交中击败了48.00%的用户
- 内存消耗:15 MB, 在所有 Python3 提交中击败了28.04%的用户
class Solution:
def runningSum(self, nums: List[int]) -> List[int]:
runningSum = nums.copy()
for i in range(len(nums)):
runningSum[i] = sum(nums[0:i], nums[i])
return runningSum
solution two
-
思路:首先创建空的list
runningSum = []
,然后temp
负责计算前i个数的和,在每轮的循环中将这个动态变化的temp
拼接在runningSum
的末尾,即追加元素。 -
append() 方法用于在列表末尾添加新的对象。该方法无返回值,但是会修改原来的列表。语法:list.append(obj)
-
执行用时:40 ms, 在所有 Python3 提交中击败了70.06%的用户
-
内存消耗:15 MB, 在所有 Python3 提交中击败了28.04%的用户
class Solution:
def runningSum(self, nums: List[int]) -> List[int]:
runningSum = []
temp = 0
for i in nums:
temp = temp + i
runningSum.append(temp)
return runningSum
优质题解
- 作者:jia-zhi-tong-1
链接:https://leetcode-cn.com/problems/running-sum-of-1d-array/solution/yi-wei-shu-zu-de-dong-tai-he-by-jia-zhi-01lby/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 - 执行用时:36 ms, 在所有 Python3 提交中击败了87.92%的用户
- 内存消耗:14.8 MB, 在所有 Python3 提交中击败了92.63%的用户
class Solution:
def runningSum(self, nums: List[int]) -> List[int]:
N = len(nums)
for i in range(1, N):
nums[i] += nums[i-1]
return nums