2.第一次提交的func combinationSum3(k int, n int) [][]int {
result :=new([][]int)var array []intgetInt(result, n, k,9, array,0)return*result
}//funcgetInt(result *[][]int, n, k, now int, nowArray []int, num int){//跳出条件数组长度等于k的时候跳出,不管是否成功iflen(nowArray)== k {if num == n {
x :=make([]int, k)copy(x, nowArray)*result =append(*result, x)}return}for i := now; i >=1; i--{//当nowArrayif num+i <= n {
nowArray =append(nowArray, i)getInt(result, n, k, i-1, nowArray, num+i)//还原nowArray
nowArray = nowArray[:len(nowArray)-1]}}}
3.第二次提交
funccombinationSum3(k int, n int)[][]int{
result :=[][]int{}var array []intgetInt(&result, n, k,9, array,0)return result
}//funcgetInt(result *[][]int, n, k, now int, nowArray []int, num int){//跳出条件数组长度等于k的时候跳出,不管是否成功iflen(nowArray)== k {if num == n {
x :=make([]int, k)copy(x, nowArray)*result =append(*result, x)}return}for i := now; i >=1; i--{//当nowArrayif num+i <= n {
nowArray =append(nowArray, i)getInt(result, n, k, i-1, nowArray, num+i)//还原nowArray
nowArray = nowArray[:len(nowArray)-1]}}}
import("fmt""testing")funcBenchmarkAppendPointer(b *testing.B){var result [][]intfor i :=0; i < b.N; i++{
x :=make([]int,0)
result =append(result, x)}}funcBenchmarkAppendSlice(b *testing.B){
result :=[][]int{}for i :=0; i < b.N; i++{
x :=make([]int,0)
result =append(result, x)}}funcmain(){// 比较使用指针和切片的追加操作性能
fmt.Println("Benchmark Append Pointer:")
fmt.Println(testing.Benchmark(BenchmarkAppendPointer))
fmt.Println("Benchmark Append Slice:")
fmt.Println(testing.Benchmark(BenchmarkAppendSlice))}