Leetcode Java Permutations
업데이트:
문제
코드
class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
this.getPermutations(result, new ArrayList<>(), nums);
return result;
}
private void getPermutations(List<List<Integer>> result, List<Integer> list, int[] nums) {
if (list.size() == nums.length) {
result.add(new ArrayList<Integer>(list));
} else {
for (int idx = 0; idx < nums.length; idx++) {
if (list.contains(nums[idx])) {
continue;
}
list.add(nums[idx]);
this.getPermutations(result, list, nums);
list.remove(list.size() - 1);
}
}
}
}
결과
설명
-
주어진 배열 nums를 이용하여 각 숫자열의 고유 조합을 만드는 문제이다.
-
재귀 호출을 통해서 주어진 변수 nums로 임시 변수 list에 각 숫자의 고유 조합을 만들어 결과를 담는 변수 result에 주입하여 주어진 문제의 결과를 만들어준다.
-
임시 변수 list의 길이와 nums의 길이가 같다면, list가 각 숫자열의 고유 조합이므로 결과를 담는 변수 result에 주입한다.
- 그 외의 경우 주어진 변수 nums로 반복하여 고유 조합을 완성한다.
- nums[idx]의 값이 임시 변수 list에 포함되는 경우는 제외하고 반복을 지속한다.
- nums[idx]의 값이 임시 변수 list에 포함되지 않는 경우, nums[idx]의 값을 list에 넣어주고 재귀 호출을 반복한다.
- 재귀 호출이 끝난 경우, list의 마지막 값을 제거하고 반복문을 지속한다.
- 재귀 호출이 모두 완료되면 각 숫자열의 고유 조합을 저장한 result 변수를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기