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

(java)Subsets

2016-03-08 13:12 295 查看
Given a set of distinct integers, nums, return all possible subsets.

Note:

Elements in a subset must be in non-descending order.
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],
[]
]


思路:就是产生个数为1,2,3.....n的全排列,就是一个for循环在里面全排列就行
代码如下(已通过leetcode)
public class Solution {

public List<List<Integer>> subsets(int[] nums) {

List<List<Integer>> lists=new ArrayList<List<Integer>>();

List<Integer> list=new ArrayList<Integer>();

lists.add(list);

int n=nums.length;

if(n==0||nums==null) return lists;

Arrays.sort(nums);

for(int i=1;i<=n;i++) {

dfs(nums,lists,list,0,i);

}

return lists;

}

private void dfs(int[] nums, List<List<Integer>> lists, List<Integer> list, int start, int number) {

// TODO Auto-generated method stub

if(number==list.size()) {

lists.add(new ArrayList<Integer>(list));

return;

}

for(int i=start;i<nums.length;i++) {

list.add(nums[i]);

dfs(nums,lists,list,i+1,number);

list.remove(list.size()-1);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: