>[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] ## 使用雙指針
* 定義兩個指針,**右指針值** 計算后 等于 當前**右指針值** 加 **左指針**

>[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
};
~~~
- 刷題準備
- 統計數組中元素出現次數
- Leetcode -- 442數組中重復的數據
- leetcode -- 448 找到所有數組中消失的數字
- 字符類似題
- Leetcode -- 1002 查找共用字符
- Leetcode -- 1370上升下降字符串
- 指針類題解
- Leetcode -- 283 移動零
- Leetcode -- 26. 刪除有序數組中的重復項
- Leetcode -- 80. 刪除有序數組中的重復項 II
- Leetcode -- 27. 移除元素
- Leetcode -- 344. 反轉字符串
- Leetcode -- 125 驗證回文串
- Leetcode -- 11 盛最多水的容器
- Leetcode -- 1480. 一維數組的動態和