1
私は新しいleanerです。私はそれを使っていくつかのleetcode問題を解決しようとしていますhttps://leetcode.com/problems/subsets-ii/description/。しかし、私は正しい答えを得ることができません、私はそれをデバッグしようとすると、私はいくつかの変数が私はそれに何もアクションをしないで変更を見つける。Golangスライスが変更されていないときに変更されました
package main
import (
"fmt"
"sort"
)
func get_set(nums []int, can []int, pos int, last_in bool) [][]int{
if pos == len(nums) {
res := [][]int{can}
fmt.Println("Return:")
fmt.Println(res)
return res
}
f_res := [][]int{}
if !last_in || (pos > 0 && nums[pos]!=nums[pos-1]){
first_res := get_set(nums,can,pos+1,false)
fmt.Println("First")
fmt.Println(first_res)
f_res = append(f_res,first_res...)
fmt.Println("f_res")
fmt.Println(f_res)
}
// Problem is here
fmt.Println("f_res")
fmt.Println(f_res)
fmt.Println(can)
can = append(can,nums[pos])
fmt.Println(can)
// Problem is here
fmt.Println("f_res")
fmt.Println(f_res)
second_res := get_set(nums,can,pos+1,true)
fmt.Println("Second")
fmt.Println(second_res)
f_res = append(f_res,second_res...)
fmt.Println("Total")
fmt.Println(f_res)
return f_res
}
func subsetsWithDup(nums []int) [][]int {
res := make([][]int,0)
sort.Ints(nums)
con := make([]int,0)
res = get_set(nums,con,0,false)
return res
}
func main() {
nums := []int{1,2,3,4,5}
res := subsetsWithDup(nums)
fmt.Println(res)
//for _,l := range res{
// fmt.Println(l)
//}
}
印刷情報は、次のとおりです。
...
Total
[[1 2 3] [1 2 3 5]]
First
[[1 2 3] [1 2 3 5]]
f_res
[[1 2 3] [1 2 3 5]]
f_res
[[1 2 3] [1 2 3 5]]
[1 2 3]
[1 2 3 4]
f_res
[[1 2 3] [1 2 3 4]]
...
変数f_resは、私はいくつかの値を追加するときコンように変更する理由。 ありがとうございます!
ありがとうございます!私は試してみましたが、うまくいかないようですが、f_resがちょうど変わったケースがあります。 –
Thankeあなたは大変です!それは最終的に動作します –