78. Subsets

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],
  []
]
public class Solution {
    public List<List> subsets(int[] nums) {
        List<List> res = new ArrayList<List>();
        if (nums == null || nums.length == 0) {
            return res;
        }
        List tem = new ArrayList();
        Arrays.sort(nums);
        helper(res, tem, nums, 0);
        return res;
    }
    public void helper(List<List> res, List tem, int[] nums, int index) {
        res.add(new ArrayList(tem));//防止引用修改所以要new 一个list
        if (index >= nums.length) {
            return;
        }
        for (int i = index; i < nums.length; i++) {
            tem.add(nums[i]);
            helper(res, tem, nums, i + 1);
            tem.remove(tem.size() - 1);
        }
        //这里添加元素是从后往前加的,remove的时候也是
    }
}

留下评论