一、题目描述:
给你一个列表 nums 。列表「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
请返回 nums 的动态和。
示例1:
输入:[1, 2, 3, 4]
输出:[1, 3, 6, 10]
过程简析:[1, 1+2, 1+2+3, 1+2+3+4]
示例2:
输入:[1, 1, 1, 1, 1, 1]
输出:[1, 2, 3, 4, 5, 6]
过程简析:[1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1, 1+1+1+1+1+1]
二、解题思路:
分类讨论:
(一)列表为空:很显然,如果列表为空,直接返回原列表。
(二)列表不为空:设函数输入的列表为 nums[ ],长度为 n+1 ,函数返回的列表为 a[ ]
则:
a[0] = nums[0]
a[1] = nums[0] + nums[1]
a[2] = nums[0] + nums[1] + nums[2]
a[3] = nums[0] + nums[1] + nums[2] + nums[3]
...
a[n] = nums[0] + ... + nums[n]
我们不难从中发现规律,将运算简化一下:
a[0] = nums[0]
a[1] = a[0] + nums[1]
a[2] = a[1] + nums[2]
a[3] = a[2] + nums[3]
...
a[n] = a[n-1] + nums[n]
那我们就可以开始编写代码:
def runningSum(nums: list[int]) -> list[int]:
# 先判断列表是否为空:
if len(nums) == 0:
# 空列表直接返回原列表
return nums
else:
# 定义初始化列表a
a: list = [nums[0]]
# 遍历原列表,计算,添加元素至新列表
for i in range(1, len(nums)):
a.append(a[i - 1] + nums[i])
return a
那么,这道题我们就完成了。欢迎大家交流更多的解法~~