leetCode练习(78)
2016-10-16 20:23
295 查看
题目:Subsets
难度:medium
问题描述:
Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums =
解题思路:
同第77题,使用DFS回溯求解。没啥难度,甚至不用考虑nums里面有重复的数。具体代码如下:
public class m_78_Subsets {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> reslist=new ArrayList<List<Integer>>();
ArrayList<Integer> temp=new ArrayList<>();
DFS(nums,1,temp,reslist);
return reslist;
}
public void DFS(int[]nums,int step,ArrayList<Integer> temp,List<List<Integer>> reslist){
List<Integer> list=new ArrayList<Integer>(temp);
reslist.add(list);
showlist(list);
if(step>nums.length){
return;
}
for(int i=step;i<=nums.length;i++){
temp.add(nums[i-1]);
DFS(nums,i+1,temp,reslist);
temp.remove(temp.size()-1);
}
}
public static void showlist(List<Integer> list){
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+":");
}
System.out.println();
}
public static void main(String[]args){
int[]nums={1,2,3};
m_78_Subsets s=new m_78_Subsets();
s.subsets(nums);
}
}
难度:medium
问题描述:
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题,使用DFS回溯求解。没啥难度,甚至不用考虑nums里面有重复的数。具体代码如下:
public class m_78_Subsets {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> reslist=new ArrayList<List<Integer>>();
ArrayList<Integer> temp=new ArrayList<>();
DFS(nums,1,temp,reslist);
return reslist;
}
public void DFS(int[]nums,int step,ArrayList<Integer> temp,List<List<Integer>> reslist){
List<Integer> list=new ArrayList<Integer>(temp);
reslist.add(list);
showlist(list);
if(step>nums.length){
return;
}
for(int i=step;i<=nums.length;i++){
temp.add(nums[i-1]);
DFS(nums,i+1,temp,reslist);
temp.remove(temp.size()-1);
}
}
public static void showlist(List<Integer> list){
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+":");
}
System.out.println();
}
public static void main(String[]args){
int[]nums={1,2,3};
m_78_Subsets s=new m_78_Subsets();
s.subsets(nums);
}
}
相关文章推荐
- LeetCode Online Judge 题目C# 练习 - Merge Sorted Array
- LeetCode Online Judge 题目C# 练习 - Search Insert Position
- LeetCode Online Judge 题目C# 练习 - String to Integer (atoi)
- LeetCode Online Judge 题目C# 练习 - Subsets II
- LeetCode Online Judge 题目C# 练习 - Word Search
- 数据结构与算法 LeetCode编程练习--Delete Node in a Linked List
- LeetCode78
- Leetcode练习-两个数字相加(Add two numbers)
- leetCode练习(52)
- [LeetCode]78 Subsets
- leetcode78subset
- leetCode练习(85)
- leetCode练习(2)
- Leetcode练习-Best Time to Buy and Sell Stock II
- leetcode 78:Subsets
- leetCode练习(93)
- leetCode练习(95)
- Leetcode 78 Subsets
- Leetcode 78. Subsets
- LeetCode 练习: Subset ii