题解 | #集合的所有子集# Go + 回溯

集合的所有子集

http://www.nowcoder.com/practice/c333d551eb6243e0b4d92e37a06fbfc9

go 回溯实现

package main

import "sort"
/**
 * 
 * @param A int整型一维数组 
 * @return int整型二维数组
*/
func subsets( A []int ) [][]int {
    // write code here
    if len(A) == 0 {
        return nil
    }

    sort.Ints(A)
    ret := make([][]int, 0)
    path := make([]int, 0)

//  兵役闭包函数
    var do func(start int, path []int)
    do = func(start int, path []int) {
//      把path追加到结果中
        tmp := make([]int, len(path))
        copy(tmp, path)
        ret = append(ret, tmp)

//      起始位置大于A长度,则退出
        if start >= len(A) {
            return
        }

//      从起始位置开始
        for i:= start; i<len(A); i++{
            path = append(path, A[i])
            do(i+1, path)
            path = path[:len(path)-1]
        }
    }

    do(0, path)

    return ret
}
全部评论

相关推荐

今天 18:49
同济大学 设计
点赞 评论 收藏
分享
醒工硬件:1学校那里把xxxxx学院去了,加了学院看着就不像本校 2简历实习和项目稍微精简一下。字太多,面试官看着累 3第一个实习格式和第二个实习不一样。建议换行 4项目描述太详细了,你快把原理图贴上来了。比如可以这样描述:使用yyyy芯片,使用xx拓扑,使用pwm控制频率与占空比,进行了了mos/电感/变压器选型,实现了xx功能 建议把技术栈和你做的较为有亮点的工作归纳出来 5熟悉正反激这个是真的吗
点赞 评论 收藏
分享
肥沃富饶:可能初创公司,老板不懂技术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务