# 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}]"}
Expand menu