[LintCode/LeetCode] Subsets & Subsets II

Subsets

Problem

Given a set of distinct integers, return all possible subsets.

Notice

Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.

Example

If S = [1,2,3], a solution is:

[  [3],  [1],  [2],  [1,2,3],  [1,3],  [2,3],  [1,2],  []]

Challenge

Can you do it in both recursively and iteratively?

Solution

class Solution {    public ArrayList> subsets(int[] nums) {        ArrayList> res = new ArrayList();        if (nums == null || nums.length == 0) return res;        ArrayList cur = new ArrayList();        Arrays.sort(nums);        dfs(nums, cur, res, 0);        return res;    }    public void dfs(int[] nums, ArrayList cur, ArrayList> res, int index) {        if (index > nums.length) return;        res.add(new ArrayList (cur));        for (int i = index; i > subsetsWithDup(ArrayList S) {        ArrayList> res = new ArrayList();        Collections.sort(S);        ArrayList cur = new ArrayList();        dfs(S, cur, res, 0);        return res;    }    public void dfs(ArrayList S, ArrayList cur, ArrayList> res, int index) {        if (index > S.size()) return;        res.add(new ArrayList (cur));        for (int i = index; i < S.size(); i++) {            if (i != index && S.get(i) == S.get(i-1)) continue;            cur.add(S.get(i));            dfs(S, cur, res, i+1);            cur.remove(cur.size()-1);        }    }}

关键字:java, dfs, recursion, arraylist


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部