https://leetcode.com/problems/subsets/
Given an integer array nums of unique elements, return all possible subsets (the power set).
The solution set must not contain duplicate subsets. Return the solution in any order.
All the numbers of nums are unique.
앞의 문제는 순열을 구하는 문제였는데, 이 문제는 부분 집합을 구하는 문제이다. 각 케이스는 조합처럼 순서가 없는 경우의 수를 구해야 한다. 어려웠는데 다음에 다시 풀때까지 익숙해져야할 것 같다.
import java.util.ArrayList;
import java.util.List;
class Solution {
private void dfs(List<List<Integer>> answer, List<Integer> oneCase, int[] nums, int limit) {
answer.add(new ArrayList<>(oneCase));
for (int i = limit; i < nums.length; i++) {
oneCase.add(nums[i]);
dfs(answer, oneCase, nums, i + 1);
oneCase.remove(oneCase.size() - 1);
}
}
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> answer = new ArrayList<>();
dfs(answer, new ArrayList<>(), nums, 0);
return answer;
}
}