您的位置:首页 > 编程语言 > Java开发

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 =
[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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息