阿里云社区博客专家/清华大学出版社签约作者✍/CSDN百万访问博主/B站千粉前端up主
题库:力扣
题目序号:1480(简单)
题目:一维数组的动态和
给你一个数组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] 。
解题思路:
通过示例可以分析出两种情况
①动态和的第一项和数组的第一项是一样的数值👉直接赋值
②动态和的其余项(第n项)为从第1项累加到第n项👉需要计算
所以这里就可以通过一个if...else...
去判断
对于②
可以设计一个函数,接收当前第n项的n
,以及需要计算的数组
那么只需通过一个for循环
和+=
即可累加出结果
总的来说考验了对函数的设计、if...else...
、for循环
和+=
等基础语法的运用
解题代码:
function runningSum(nums: number[]): number[] {function sum(i:number,nums:number[]):number{let sumCount:number = 0// 当i=1时for(let j = 0;j<=i;j++){// sumCount == nums[0] == 1 sumCount += nums[j] }return sumCount}let arr:number[] = []for(let i = 0;i<nums.length;i++){// 当i=0时,也就是第一项恒定是输入的第一项if(i==0){arr[0] = nums[0]}else{// 当i!=0时,假设数组下标到了i=1,那么sum(1,nums),返回的是arr[i] = sum(i,nums)}}return arr
};
解题过程示例:
略