Leetcode Java Subsets

업데이트:

문제

Link

코드

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);
    }
  }

}

결과

Link

설명

  1. 주어진 배열 nums의 값들을 조합하여 하위 배열을 생성하는 문제이다.

  2. 재귀 호출을 수행하여 빈 배열부터 주어진 배열까지의 조합들을 생성한다.
    • 하위 배열들을 저장할 result에 새로운 배열 temp를 활용하여 넣어준다.
    • start부터 nums의 크기만큼 반복하여 하위 배열들을 생성한다.
    • 다시 반복이 수행되기 전 temp에 마지막 값을 제외하여 새로운 조합을 만들게 한다.
  3. 재귀호출이 완료되면 하위 배열들의 조합을 저장한 result를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기