多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
>[success] # 一维数组的动态和 * **描述** 给你一个数组 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] ~~~ 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/running-sum-of-1d-array 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 >[info] ## 暴力解法 * 双重循环依次对应位置取累加需要累加计算的值 ~~~ /** * @param {number[]} nums * @return {number[]} */ var runningSum = function(nums) { const newNums = new Array(nums.length).fill(0) for(let i = 0;i<nums.length;i++){ for(let j=i;j<nums.length;j++){ newNums[j]+=nums[i] } } return newNums }; ~~~ >[info] ## 使用双指针 * 定义两个指针,**右指针值** 计算后 等于 当前**右指针值** 加 **左指针** ![](https://img.kancloud.cn/15/a8/15a800dbe6cf167c8ddcc9725b91c88d_1224x644.png) >[danger] ##### js ~~~ var runningSum = function(nums) { let l = 0; let r = 1; while( r < nums.length ){ nums[ r ] += nums[l] l++ r++ } return nums }; ~~~ * 或 ~~~ var runningSum = function(nums) { let prefixSum = new Array(nums.length).fill(nums[0]) for (let i = 1; i < nums.length; i++) { prefixSum[i] = prefixSum[i - 1] + nums[i] } return prefixSum }; ~~~ >[danger] ##### java ~~~ class Solution { public int[] runningSum(int[] nums) { int[] newNums = new int[nums.length]; newNums[0] = nums[0]; for(int i=0;i<nums.length-1;i++){ newNums[i+1] = newNums[i] + nums[i+1]; } return newNums; } } ~~~ 或 ~~~ var runningSum = function(nums) { let prefixSum = new Array(nums.length).fill(nums[0]) for (let i = 1; i < nums.length; i++) { prefixSum[i] = prefixSum[i - 1] + nums[i] } return prefixSum }; ~~~