第一次參與it邦幫忙所舉辦的鐵人賽
對於自己這一次參與的期望,主要是希望自己能在活動中有所收獲及成長,並完完整整的跟完看完一些有興趣的系列文章。在接下來連續著發文三十天中,我將分享我所在鐵人賽中所見所聞,並持續思考如何調整並改善自己所發的文章。
鐵人開賽的第一天,看到的有人是打算以每天用自己想要精進的語言練習撰寫一題leetcode的方式,心有所感,所以在這 30 天,文章將會以此位鐵人所分享的題目為底(自己以 javascript 來解題);並學習各位鐵人們在文章中所分享的內容或跟著實作。
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.
Example 1:
Input: nums = [1,2,3,4]
Output: [1,3,6,10]
Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].
Example 2:
Input: nums = [1,1,1,1,1]
Output: [1,2,3,4,5]
Explanation: Running sum is obtained as follows: [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].
Example 3:
Input: nums = [3,1,2,10,1]
Output: [3,4,6,16,17]
有時看不懂題意時,不妨看看題目所提供的範例;或許反而會因為看懂了範例,而知道題目是在要求什麼
var runningSum = function(nums) {
var result = [];
nums.forEach(function(i, idx) {
if(idx === 0) {
result.push(i);
}
else {
result.push(i + result[idx - 1]);
}
});
return result;
}
正當在檢視文章猶豫著要不要發文時,突然想到此題目解法的過程與陣列中 reduce
處理的過程有點類似,都是與前一個值進行計算,所以又想到可以如下的處理方式。姑且不論解法是好或壞,起碼在解題的過程中已經依靠著自己生出了 2
種解法了 XD。
var runningSum = function(nums) {
let result = []
nums.reduce((acc, cur) => {
result.push(acc + cur)
return acc + cur
}, 0)
return result
}