리트코드) 78. 부분집합(자바)
https://leetcode.com/problems/subsets/
문제 : 모든 부분집합을 리턴하라.
입력 : nums = [1, 2, 4] 출력 : [[], [1], [2], [4], [1,2], [1,4], [2,4], [1,2,4]]
- 별도의 종료조건이 필요없다. (모든 탐색의 경로가 부분집합이 되므로)
import java.util.List;
import java.util.ArrayList;
import java.util.ArrayDeque;
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
dfs(result, new ArrayDeque<>(), nums, 0);
return result;
}
public void dfs(List<List<Integer>> result, ArrayDeque<Integer> temp, int[] nums, int idx) {
result.add(new ArrayList<>(temp));
for(int i=idx; i<nums.length; i++) {
temp.add(nums[i]);
dfs(result, temp, nums, i+1);
temp.removeLast();
}
}
}