Medium
Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.
Example 1:
Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
Plain Text
복사
Example 2:
Input: nums = [0,1]
Output: [[0,1],[1,0]]
Plain Text
복사
Example 3:
Input: nums = [1]
Output: [[1]]
Plain Text
복사
Constraints:
•
1 <= nums.length <= 6
•
10 <= nums[i] <= 10
•
All the integers of nums are unique.
My solution
중복은 들어오지 않음
temp 배열에 사용한 요소를 넣어줌, temp의 길이와 입력받은 배열의 길이가 같다면 return;하고, 그 요소의 방문을 취소한다.
반복문의 다음 루프에서 그 다음 요소를 사용하고 동일하게 위의 조건에 따라 return;됨
return 전에는 순열의 조건을 만족한 것이므로 perm배열에 저장
다른사람풀이
소스코드
/**
* @param {number[]} nums
* @return {number[][]}
*/
const permute = function (nums) {
const input = [...nums];
const perm = [];
const temp = [];
const chk = [...Array(nums.length)];
const dfs = () => {
if (temp.length === input.length) {
perm.push([...temp]);
return;
}
for (let i = 0; i < input.length; i++) {
if (!chk[input[i]]) {
chk[input[i]] = 1;
temp.push(input[i]);
dfs(i + 1);
chk[input[i]] = 0;
temp.pop();
}
}
};
dfs();
return perm;
};
test('TC1', () => {
expect(permute([1, 2, 3])).toStrictEqual([
[1, 2, 3],
[1, 3, 2],
[2, 1, 3],
[2, 3, 1],
[3, 1, 2],
[3, 2, 1],
]);
});
// test('TC2', () => {
// expect(permute([0, 1])).toStrictEqual([
// [0, 1],
// [1, 0],
// ]);
// });
// test('TC3', () => {
// expect(permute([1])).toStrictEqual([[1]]);
// });
JavaScript
복사