package com.app.main.LeetCode;
import java.util.ArrayList;
import java.util.List;
/**
* 78
*
* medium
*
* https://leetcode.com/problems/subsets/
*
Given a set of distinct integers, nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
Example:
Input: nums = [1,2,3]
Output:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
Accepted
430,059
Submissions
772,038
* Created with IDEA
* author:Dingsheng Huang
* Date:2019/10/18
* Time:下午10:31
*/
public class Subsets {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
for (int i = 0; i <= nums.length; i++) {
backtrack(result, new ArrayList<>(), nums, 0, i);
}
return result;
}
private void backtrack(List<List<Integer>> result, List<Integer> tempList, int[] nums, int start, int depth) {
if (depth == 0) {
result.add(new ArrayList<>(tempList));
return;
}
for (int i = start; i < nums.length; i++) {
tempList.add(nums[i]);
depth = depth - 1;
backtrack(result, tempList, nums, i + 1, depth);
tempList.remove(tempList.size() - 1);
depth++;
}
}
}