--- title: Leetcode 1480. Running Sum of 1d Array tags: leetcode --- # 1480. Running Sum of 1d Array ## 題目連結 https://leetcode.com/problems/running-sum-of-1d-array/description/ ## 題目敘述 Given an array nums. We define a running sum of an array as runningSum[i] = sum(nums[0]…nums[i]). Return the running sum of nums. > return的array[i]是原本array[0]+...+原本array[i] **Example 1** :::success Input: nums = [1,2,3,4] Output: [1,3,6,10] Explanation: [1, 1+2, 1+2+3, 1+2+3+4]. ::: **Example 2** :::success Input: nums = [1,1,1,1,1] Output: [1,2,3,4,5] ::: **Example 3** :::success Input: nums = [3,1,2,10,1] Output: [3,4,6,16,17] ::: **Constraints** - 1 <= `nums.length` <= 1000 - -10^6 <= `nums[i]` <= 10^6 --- ## 解題思路 原本想說透過兩層迴圈去,最外層跑遍nums[0]到nums[nums.length-1],內層從nums[0]到nums[i],i為目前跑到的index,然後存入新的陣列然後回傳。 後來透過 [Solutions](https://leetcode.com/problems/running-sum-of-1d-array/solutions/3167663/simple-solution-java-cpp-python-c-language-runtime-1-ms-beats-100/) 發現用一層就可以了ㄟ,nums中每個元素的值就等於目前的元素加上前一項:`nums[i] += nums[i-1]`,由於前一項會是前面元素加起來的合,因此透過一個迴圈跑即可。 **java程式碼** ```cpp= class Solution { public int[] runningSum(int[] nums) { for(int i = 1 ; i < nums.length ; i++) { nums[i] += nums[i-1]; } return nums; } } ``` **執行結果** ![](https://hackmd.io/_uploads/Sk9BWGcbT.png)