Leetcode-78. Subsets
2016-10-11 15:26
453 查看
前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums =
is:
这个题目和77是类似的,我不由感叹递归大法好。。。Your runtime beats 91.55% of java submissions.
public class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> results = new ArrayList<List<Integer>>();
List<Integer> currentResults = new ArrayList<Integer>();
List<Integer> remain = new ArrayList<Integer>();
for(int num : nums) remain.add(num);
generate(results,currentResults,remain);
results.add(new ArrayList<Integer>());
return results;
}
public void generate(List<List<Integer>> results, List<Integer> currentResults, List<Integer> remain){
int times = remain.size();
for(int i = 0 ; i < times; i ++){
currentResults.add(remain.get(0));
remain.remove(0);
results.add(new ArrayList<Integer>(currentResults));
generate(results,currentResults,new ArrayList<Integer>(remain));
currentResults.remove(currentResults.size()-1);
}
}
}
博客链接:mcf171的博客
——————————————————————————————
Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums =
[1,2,3], a solution
is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
这个题目和77是类似的,我不由感叹递归大法好。。。Your runtime beats 91.55% of java submissions.
public class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> results = new ArrayList<List<Integer>>();
List<Integer> currentResults = new ArrayList<Integer>();
List<Integer> remain = new ArrayList<Integer>();
for(int num : nums) remain.add(num);
generate(results,currentResults,remain);
results.add(new ArrayList<Integer>());
return results;
}
public void generate(List<List<Integer>> results, List<Integer> currentResults, List<Integer> remain){
int times = remain.size();
for(int i = 0 ; i < times; i ++){
currentResults.add(remain.get(0));
remain.remove(0);
results.add(new ArrayList<Integer>(currentResults));
generate(results,currentResults,new ArrayList<Integer>(remain));
currentResults.remove(currentResults.size()-1);
}
}
}
相关文章推荐
- [leetcode] 78. Subsets
- leetcode78、90-Subsets I/II(组合数/子集数目)
- [leetcode] 78. Subsets
- LeetCode_78 Subsets
- 【leetcode】Array——Subsets(78)
- leetcode[78] Subsets
- leetcode-78 Subsets
- [leetcode-78]subsets(java)
- LeetCode-78-Subsets 水题暴力
- leetcode 78 Subsets
- [Leetcode 64] 78 Subsets
- LeetCode 78: Subsets
- [LeetCode] 78. Subsets
- 【一天一道LeetCode】#78. Subsets
- leetcode[78]Subsets
- LeetCode 78 Subsets (Python详解及实现)
- Leetcode 78. Subsets
- [leetcode] 78.Subsets
- leetcode解题之 77. Combinations&78. Subsets&90. Subsets II java 版(求所有子集)
- LeetCode之78. Subsets