[LeetCode] 78. Subsets Java

题目:

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],
  []
]

题意及分析:给出一个无重复值的集合,要求给出所有可能的子集。这道题直接用动态规划求解,因为每一次backtack的时候都有解,所以在每次backtrack的时候将结果写入即可。

代码:

public class Solution {
    public List<List<Integer>> subsets(int[] nums) {
		List<List<Integer>> resList = new ArrayList<>();
		
		Arrays.sort(nums);
		List<Integer> list=new ArrayList<>();
		backtracking(resList, list, nums, 0);
// 		System.out.println(resList);
		return resList;
    }
	
	public void backtracking(List<List<Integer>> resList,List<Integer> list,int[] nums,int start) {
		resList.add(new ArrayList<>(list));
		for(int i=start;i<nums.length;i++){
			list.add(nums[i]);
			backtracking(resList, list, nums, i+1);
			list.remove(list.size()-1);
		}
	}
}

 

  

 

posted @ 2017-06-08 19:28  荒野第一快递员  阅读(783)  评论(0编辑  收藏  举报