0%

csharp LeetCode Running Sum of 1d Array

 

看這題以我的直覺會寫成比較囉嗦的語法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Solution {
public int[] RunningSum(int[] nums) {
int[] result = new int[nums.Length];
int prevSum = 0;
for(int i = 0 ; i < nums.Length; i++){
if(i > 0)
prevSum += nums[i];
else
prevSum = nums[i];

result[i] = prevSum;
}
return result;
}
}

後來想想其實可以寫作索引起始為 1 去修改 nums
以上兩種都算是大多數人的想法

1
2
3
4
5
6
7
8
public class Solution {
public int[] RunningSum(int[] nums) {
for(int i = 1 ; i < nums.Length; i++){
nums[i] += nums[i - 1];
}
return nums;
}
}

又看看有無 linq 解法 , 好像這類型的問題只要用 linq 的 select 即可解決 , 而且是函數式不會直接修改到原始 array 資料

1
2
3
4
5
6
public class Solution {
public int[] RunningSum(int[] nums) {
int sum = 0;
return nums.Select(x => sum += x).ToArray();
}
}
關閉