package main
import "fmt"
func subsets (nums []int) [][]int {
// write your code here
var alist = [][]int{[]int{}}
for _,num :=range nums{
size := len(alist)
for i:=0;i<size;i++{
tmp := alist[i]
tmp = append(tmp,num)
alist = append(alist,tmp)
}
}
return alist
}
func main(){
var mlist = []int{1,2,3,4,5}
fmt.Print(subsets(mlist))
}
lintcode题目
17. 子集
给定一个含不同整数的集合,返回其所有的子集。
问题:解题通过golang实现,为什么在alist切片append第24个元素[1,2,3,5]时,会把原来alist中
第16个元素[1,2,3,4]同时修改为[1,2,3,5]?谢谢
没有检查到任何修改alist第16位元素的操作。
15和23地址也不一样啊
alist[15] address:0xc000098168
alist[22] address:0xc000098210
alist[15]:[1 2 3 4]
alist[22]:[2 3 5]
alist[15] address:0xc000098168
alist[22] address:0xc000098210
alist[23] address:0xc000098228
alist[15]:[1 2 3 5]
alist[22]:[2 3 5]
alist[23]:[1 2 3 5]