[LeetCode]78. Subsets
2016-12-24 08:29
441 查看
Given a set of distinct integers, nums,
return all possible subsets.
具体题目要求:点击打开链接
思路:例如数组[1,2,3]
1.先添加空new ArrayList;
([ ])
2.对于数组nums[0]=1,添加到刚才的空ArrayList里面,然后把当前结果添加到暂时的汇总ArrayList temp里面;
[ ]->[1],temp:[[1]],result:[[
],[1]]
3.对于数组nums[1]=2,再继续;
[ ]->[2], [1]->[1,2],temp:[[2],[1,2]],result:[[
],[1],[2],[1,2]]
4.对于数组nums[2]=3,再继续;
[ ]->[3], [1]->[1,3], [2]->[2,3], [1,2]->[1,2,3],temp:[[3],[1,3],[2,3],[1,2,3]],result:[[
],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
回溯法
return all possible subsets.
具体题目要求:点击打开链接
思路:例如数组[1,2,3]
1.先添加空new ArrayList;
([ ])
2.对于数组nums[0]=1,添加到刚才的空ArrayList里面,然后把当前结果添加到暂时的汇总ArrayList temp里面;
[ ]->[1],temp:[[1]],result:[[
],[1]]
3.对于数组nums[1]=2,再继续;
[ ]->[2], [1]->[1,2],temp:[[2],[1,2]],result:[[
],[1],[2],[1,2]]
4.对于数组nums[2]=3,再继续;
[ ]->[3], [1]->[1,3], [2]->[2,3], [1,2]->[1,2,3],temp:[[3],[1,3],[2,3],[1,2,3]],result:[[
],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
public List<List<Integer>> subsets(int[] nums) { Arrays.sort(nums); List<List<Integer>> result = new ArrayList<>(); result.add(new ArrayList<>()); //添加空ArrayList for (int num : nums) { List<List<Integer>> temp = new ArrayList<>(); for (List<Integer> set : result) { List<Integer> newSet = new ArrayList<>(set); newSet.add(num); temp.add(newSet); } result.addAll(temp); } return result; }
回溯法
public ArrayList<ArrayList<Integer>> subsets(int[] num) { ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); if(num == null || num.length == 0) { return result; } ArrayList<Integer> list = new ArrayList<Integer>(); Arrays.sort(num); subsetsHelper(result, list, num, 0); return result; } private void subsetsHelper(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> list, int[] num, int pos) { result.add(new ArrayList<Integer>(list)); for (int i = pos; i < num.length; i++) { list.add(num[i]); subsetsHelper(result, list, num, i + 1); list.remove(list.size() - 1); } }
相关文章推荐
- LeetCode78 Subsets
- Leetcode 78. Subsets & 90. Subsets II
- Leetcode 78. Subsets
- Leetcode 78 Subsets
- LeetCode(78) Subsets
- 【LeetCode】78_Subsets
- LeetCode 78. Subsets
- [LeetCode] 78. Subsets
- [leetcode]78. Subsets
- LeetCode 78 Subsets
- 递归-数组的子集:leetcode 78 Subsets
- LeetCode 78 Subsets (所有子集)
- Leetcode 78 Subsets
- [Leetcode]#78 Subsets
- leetcode-78. Subsets
- 【LeetCode】C# 78、Subsets
- Leetcode 78. Subsets
- [LeetCode 78] Subsets
- [Leetcode] 78. Subsets
- LeetCode(78) Subsets