March 4, 2024

Viiisit [LeetCode] - 1480. Running Sum of 1d Array

#php#javascript#ruby

keep learning, keep coding!

Problem - Running Sum of 1d Array

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.

翻譯蒟蒻

計算 nums 陣列中每個元素從第一個元素開始到當前元素的和,並將這些和作為新的陣列返回。



Solution - JavaScript

Solution 1:
藉由建立一個新的陣列來儲存加總後的結果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* @param {number[]} nums
* @return {number[]}
*/
var runningSum = function(nums) {
let arr = [];
for (let i = 0; i < nums.length; i++) {
let sum = 0;
for (let j = 0; j <= i; j++) {
sum += nums[j];
}
arr.push(sum);
}
return arr;
};

Solution 2:
加總之後直接改變陣列的值,作為新的陣列輸出。

1
2
3
4
5
6
7
8
9
10
/**
* @param {number[]} nums
* @return {number[]}
*/
var runningSum = function(nums) {
for (let i = 1; i < nums.length; i++) {
nums[i] += nums[i - 1];
}
return nums;
};

Solution - Ruby

Solution 1:
先設定 sum 初始值為 0,透過 map 方法累加成為新的陣列。

1
2
3
4
def running_sum(nums)
sum = 0
nums.map { |num| sum += num }
end

Solution 2:
使用 mapwith_index,計算索引 0 到當前索引 index 的所有數字的總和。

1
2
3
4
5
def running_sum(nums)
nums.map.with_index do |num, index|
nums[0..index].sum
end
end

Solution - PHP

Solution 1:

1
2
3
4
5
6
function runningSum($nums) {
for ($i = 1; $i < count($nums); $i++) {
$nums[$i] += $nums[$i - 1];
}
return $nums;
}

Solution 2:

1
2
3
4
5
6
7
8
9
function runningSum($nums) {
$sum = 0;
$result = [];
for ($i = 0; $i < count($nums); $i++) {
$sum += $nums[$i];
array_push($result, $sum);
}
return $result;
}

LeetCode 傳送門 - Running Sum of 1d Array