[刷题]Subsets

原创 2015年07月07日 20:59:00

[LintCode]Subsets

Version I

class Solution {
    /**
     * @param S: A set of numbers.
     * @return: A list of lists. All valid subsets.
     */
    public ArrayList<ArrayList<Integer>> subsets(ArrayList<Integer> S) {
        // 2015-07-07
        ArrayList<ArrayList<Integer>> rst = new ArrayList<>();
        if (S == null) {
            return rst;
        }
        ArrayList<Integer> list = new ArrayList<>();
        
        helper(rst, list, S);
        return rst;
    }
    
    private void helper(ArrayList<ArrayList<Integer>> rst, 
            ArrayList<Integer>list, ArrayList<Integer> S) {
        rst.add(new ArrayList<Integer>(list));
        // 树的深度
        // if (list.size() == S.size()) {
        //     return;
        // }
        
        for (int i = 0; i < S.size(); i++) {
            if (list.size() > 0 && list.get(list.size() - 1) >= S.get(i)) {
                continue;
            }
            list.add(S.get(i));
            helper(rst, list, S);
            list.remove(list.size() - 1);
        }
        return;
    }
}

Version II

class Solution {
    /**
     * @param S: A set of numbers.
     * @return: A list of lists. All valid subsets.
     */
    public ArrayList<ArrayList<Integer>> subsets(ArrayList<Integer> S) {
        // 2015-08-28
        // S中不含相同元素,每个元素只可以用一次
        // 解集中不可以含相同解
        // 因此 解中不会含相同元素
        ArrayList<ArrayList<Integer>> rst = new ArrayList<>();
        if (S == null || S.size() == 0) {
            return rst;
        }
        Collections.sort(S);
        ArrayList<Integer> list = new ArrayList<>();
        helper(S, rst, list, 0);
        return rst;
        
    }
    
    private void helper(ArrayList<Integer> S, ArrayList<ArrayList<Integer>> rst, 
            ArrayList<Integer> list, int pos) {
        rst.add(new ArrayList<Integer>(list));
        // if (pos == S.size()) {
        //     return;
        // }
        for (int i = pos; i < S.size(); i++) {
            list.add(S.get(i));
            helper(S, rst, list, i + 1);
            list.remove(list.size() - 1);
        }
    }
}



[刷题]Subsets II

[LintCode]Subsets II class Solution { /** * @param S: A set of numbers. * @return: A l...
  • willshine19
  • willshine19
  • 2015年07月08日 09:49
  • 268

LeetCode OJ 系列之78 Subsets --Python

Problem: Given a set of distinct integers, nums, return all possible subsets. Note: Elements in...
  • ln152315
  • ln152315
  • 2015年11月18日 22:07
  • 912

LeetCode刷题(42)--Subsets

DFS算法:class Solution(object): def subsets(self, nums): """ :type nums: List[int]...
  • zombee0
  • zombee0
  • 2017年11月19日 17:19
  • 116

LeetCode刷题【Array】 Subsets

题目: Given a set of distinct integers, nums, return all possible subsets. Note: The solution ...
  • buaalt
  • buaalt
  • 2017年03月18日 17:33
  • 157

LeetCode刷题笔录Subsets

自己总是写不出递归的方法,只能用f
  • likecool21
  • likecool21
  • 2014年07月21日 08:10
  • 896

Java 刷题

Java抽象类可以实例化吗? 抽象类不能用来创建对象;方法重载(overload): 1.必须是同一个类 2方法名(也可以叫函数)一样 3参数类型不一样或参数数量不一样方法的重写(overri...
  • u012063703
  • u012063703
  • 2016年01月18日 17:48
  • 1689

程序员常用的刷题网站

1、Lintcode Lintcode.com——LintCode网站是国内较大的在线编程&测评网站。此网站提供各大IT公司的算法面试题类型,行分门别类,由简单到中等,再到难,便于不同水平的程序员进...
  • Winnielyn623
  • Winnielyn623
  • 2017年07月26日 18:20
  • 2721

谈谈程序员面试之刷题

前一段时间有一个非常有趣的故事(http://www.pingwest.com/sorry-cant-hire-you/  ),Max Howell (Homebrew的作者) 在 Google 面试...
  • github_39335046
  • github_39335046
  • 2017年06月29日 17:03
  • 2036

Python 刷题(想练python的可以对着刷一刷,持续更新)

这道题的意思是说
  • geniusluzh
  • geniusluzh
  • 2014年04月23日 10:36
  • 8119

[leetcode刷题系列]Subsets

- - 没啥好说的 class Solution { vector parse(int s, vector v){ vector ret; for(i...
  • sigh1988
  • sigh1988
  • 2013年08月06日 12:26
  • 505
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[刷题]Subsets
举报原因:
原因补充:

(最多只允许输入30个字)