Leetcode Java Subsets
업데이트:
문제
코드
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
this.recursive(result, new ArrayList<>(), nums, 0);
return result;
}
private void recursive(List<List<Integer>> result, List<Integer> temp, int[] nums, int start) {
result.add(new ArrayList<>(temp));
for (int idx = start; idx < nums.length; idx++) {
temp.add(nums[idx]);
this.recursive(result, temp, nums, idx + 1);
temp.remove(temp.size() - 1);
}
}
}
결과
설명
-
주어진 배열 nums의 값들을 조합하여 하위 배열을 생성하는 문제이다.
- 재귀 호출을 수행하여 빈 배열부터 주어진 배열까지의 조합들을 생성한다.
- 하위 배열들을 저장할 result에 새로운 배열 temp를 활용하여 넣어준다.
- start부터 nums의 크기만큼 반복하여 하위 배열들을 생성한다.
- 다시 반복이 수행되기 전 temp에 마지막 값을 제외하여 새로운 조합을 만들게 한다.
- 재귀호출이 완료되면 하위 배열들의 조합을 저장한 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기