每日一刷的LeetCode题目又来了,寒冬之下,助你拿一个大厂的测开offer
给你一个数组 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]
提示:
1 <= nums.length <= 1000 -10^6?<= nums[i] <=?10^6
题目来源:力扣(LeetCode)
解题思路
假设数组为n,里面有四个元素:n=[1,2,3,4]
以上算法处理后的数组中四个元素分别:
0: n[0]
1: n[0] + n[1]
2: n[0] + n[1] + n[2]
3: n[0] + n[1] + n[2] + n[3]
则可表述为两个循环,第一个循环是循环数组下标,第二个循环是每个新数组元素的累加处理,伪算法如:
假设新的数组为new_n
for 下标i in 数组n:
? ? ? sum = 数组n[下标i]
for j in 0..下标i:
? ? ? ? ? sum = sum +?数组n[下标j]
? ? ??new_n.append(sum)
return?new_n
整体算法如下图:
实际代码如下:
class?Solution(object): ????def?runningSum(self,?nums): ????????""" ????????:type?nums:?List[int] ????????:rtype:?List[int] ????????""" ?#定义处理后的数组,用于返回 ????????r_nums?=?[] ????????#一重循环,获取原数组中每个元素和下标 ????????for?i?in?range(len(num)): ????????????#初始当前sum值,和自身值相等 ????????????sum?=?nums[i] ????????????#从0到当前下标累加,赋值给sum ????????????for?j?in?range(0,?i): ????????????????sum?=?sum?+?nums[j] ????????????#添加到新数组中 ????????????r_nums.append(sum) ????????return?r_nums
博主:测试生财
座右铭:用测试完成原始积累,用投资奔向财务自由
csdn:https://blog.csdn.net/ccgshigao
博客园:https://HdhCmsTestcnblogs测试数据/qa-freeroad/
51cto:https://blog.51cto测试数据/14900374
查看更多关于测试面试LeetCode系列:一维数组的动态和的详细内容...