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