# golang 鐵人賽 自我挑戰賽 leetcode 30 天 第一天 running-sum-of-1d-array
## 題目解讀:
### 題目來源:
[running-sum-of-1d-array](https://leetcode.com/problems/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
回傳一個元素型別是正整數的陣列 runningSum
每個元素符合以下特性:
位於index i 的元素runningSum[i]的值
是前i個元素的和
## 初步解法:
### 初步觀察:
先觀察結果array
其中
array[i] = array[i-1] + nums[i]
所以可以利用
在loop nums的時候
順便計算出每個array element
### 初步設計:
let accum as integer with value 0
let returnSums as integer array with size of nums
loop nums with index i:
accum += nums[i]
returnSums[i] = accum
return returnSums
## 我的github source code
[running sum of 1d array](https://github.com/yuanyu90221/running_sum_of_1d_array/blob/master/runningSum.go)
```golang
package running_sum
func runningSum(nums []int) []int {
ret := make([]int, len(nums))
accum := 0
for idx, val := range nums {
accum += val
ret[idx] = accum
}
return ret
}
```
## 遇到的困難
### pseudo code撰寫
一開始不習慣把pseudo code寫下來
因此 不太容易把自己的code做解析
### golang table driven test不熟
對於table driven test還不太熟析
所以對於寫test還是耗費不少時間
## 測資的撰寫
golang本身有一個很好的測試package testing
加上reflect還好有vscode的快捷鍵
在寫好程式碼之後右鍵建立Unit test for function就會自動產生 template
如下:
```golang
package running_sum
import (
"reflect"
"testing"
)
func Test_runningSum(t *testing.T) {
type args struct {
nums []int
}
tests := []struct {
name string
args args
want []int
}{
{
name: "Example1",
args: args{
nums: []int{1, 2, 3, 4},
},
want: []int{1, 3, 6, 10},
},
{
name: "Example2",
args: args{
nums: []int{1, 1, 1, 1, 1},
},
want: []int{1, 2, 3, 4, 5},
},
{
name: "Example3",
args: args{
nums: []int{3, 1, 2, 10, 1},
},
want: []int{3, 4, 6, 16, 17},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := runningSum(tt.args.nums); !reflect.DeepEqual(got, tt.want) {
t.Errorf("runningSum() = %v, want %v", got, tt.want)
}
})
}
}
```
## 參考文章
[golang test撰寫](https://ithelp.ithome.com.tw/articles/10204692)
{"metaMigratedAt":"2023-06-15T11:31:16.146Z","metaMigratedFrom":"YAML","title":"golang 鐵人賽 自我挑戰賽 leetcode 30 天 第一天 running-sum-of-1d-array","breaks":true,"contributors":"[{\"id\":\"26019314-8fc1-463c-94bf-a62e1b56e651\",\"add\":2333,\"del\":157}]"}