题解 | #集合的所有子集# 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
}
全部评论

相关推荐

11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务