题解 | #集合的所有子集(一)#

集合的所有子集(一)

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

import java.util.*;

public class Solution {
    ArrayList<ArrayList<Integer>> result = new ArrayList<>();
    public ArrayList<ArrayList<Integer>> subsets(int[] S) {
        ArrayList<Integer> r = new ArrayList<>();
        // 找长度为length的子集
        for (int length = 0; length <= S.length; length++) {
            get(S, length, 0, r);
            r.clear();
        }
        return result;
    }

    /**
     * 找长度为length的子集
     * @param s 从s里面找
     * @param length 子集数字个数
     * @param start 从s的第start个元素开始找
     * @param r 已经挑出来的
     */
    private void get(int[] s, int length, int start, ArrayList<Integer> r){
        if(r.size()==length){ // 子集元素数够了,添加
            result.add(new ArrayList<>(r));
            return;
        }
        for (int i = start; i < s.length; i++) {
            r.add(s[i]); // 挑第i个元素
            get(s, length, i+1, r); // 继续挑
            r.remove(r.size() - 1); // 回溯,删除已挑的
        }
    }
}
全部评论

相关推荐

05-07 13:29
已编辑
门头沟学院 Java
北斗导航Compass低仿版:能不能先搞清楚优先级啊,怎么可能是项目问题,项目很重要吗?又没学历 又没实习大厂凭啥约面?那玩具项目 没应用在真实生产环境下的 就算做上天又有什么用?早点找个小公司实习 拿小公司实习去投大厂实习,这才是你现在该做的
投递美团等公司10个岗位 简历被挂麻了,求建议
点赞 评论 收藏
分享
吴offer选手:我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务