leetcode78.子集

最简单的回溯,选结果集3行,选枝剪枝3行

func subsets(nums []int) [][]int {
    res:=[][]int{}
    memo:=[]int{}

    var backtrack func(start int)

    backtrack=func(start int){
            temp:=make([]int,len(memo))
            copy(temp,memo)
            res=append(res,temp)

        for i:=start;i<len(nums);i++{
            memo=append(memo,nums[i])
            backtrack(i+1)
            memo=memo[:len(memo)-1]
        }
    } 

    backtrack(0)

    return  res

}

Last updated