78. Subsets.go

combination:
这个是典型的combination做法
dfs,注意中间结果一定要copy到新的变量中,不然会得到空值

var ans [][]int

func subsets(nums []int) [][]int {
    ans = [][]int{}
    cur := []int{}
    for i := 0; i <= len(nums); i++ {
        dfs(nums, i, 0, cur)
    }
    return ans
}
func dfs(nums []int, n, s int, cur []int) {
    if len(cur) == n {
//这里一定要拷贝
        tmp := make([]int, n)
        copy(tmp, cur)
        ans = append(ans, tmp)
        return
    }
    for i := s; i < len(nums); i++ {
        cur = append(cur, nums[i])
        dfs(nums, n, i+1, cur)
        cur = cur[:len(cur)-1]
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,135评论 1 32
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,823评论 2 9
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 1,576评论 0 1
  • 在一条漆黑路上永远走不到头,一直找不到自己的家,走了很久很久,到最后还是没有找到,到处一片漆黑,周围没有任何人,永...
    清简如荷阅读 470评论 0 0
  • 很多人都说沟通是一门艺术,也是一种修养。那到底什么是沟通呢?柔惜成长中心为您解答! 沟通是指通过谈话或其它方式进行...
    4f525100a234阅读 624评论 0 0