在leedcode发现了一个go语言的bug

67 阅读1分钟

对应力扣78题,题目和我的代码都在下面

当输入为nums :=[]int{9,0,3,5,7}时中间有一步 append的双方为

[[] [7] [5] [7 5] [3] [7 3] [5 3] [7 5 3] [0] [7 0] [5 0] [7 5 0] [3 0] [7 3 0] [5 3 0] [7 5 3 0] [9] [7 9] [5 9] [7 5 9] [3 9] [7 3 9] [5 3 9]]

[7 5 3 9]

而添加之后的原数组集里的 [7 5 3 0]会变成 [7 5 3 9]

image.png

image.png

func subsets(nums []int) [][]int {

    var ans [][]int

    if len(nums)==0{

        var arr []int

        ans=append(ans,arr)

        return ans

    }

    next:=subsets(nums[1:len(nums)])

    ans=append(ans,next...)

    for _,val:=range(next){

        ans=append(ans,append(val,nums[0]))

    }

    return ans

}