Golang:
思路:递归加回溯,emmm,就是在选择第n个时,可以选择nums[n],也可以选择空(即不填入),惭愧,这题是看了题解才理解的,太菜了。
代码如下:
func subsets(nums []int) [][]int {
var res [][]int
if len(nums)==0 {
return res
}
var temp []int
getSubsets(&res,nums,&temp,0)
return res
}
func getSubsets(res *[][]int,nums []int,temp *[]int,n int){
if n==len(nums) {
cop:=make([]int,len(*temp))
copy(cop,*temp)
*res= append(*res, cop)
return
}
*temp= append(*temp, nums[n])
getSubsets(res,nums,temp,n+1)
temp2:=*temp
temp2=temp2[:len(temp2)-1]
*temp= temp2
getSubsets(res,nums,temp,n+1)
}
有疑问加站长微信联系(非本文作者)