-
[LeetCode] 46. Permutations알고리즘 2022. 4. 28. 23:40
import copy class Solution: def permute(self, nums: List[int]) -> List[List[int]]: n = len(nums) r = [] visited = set() def rec(l): if len(l) == n: r.append(copy.deepcopy(l)) return ; for i in nums: if i not in visited: visited.add(i) l.append(i) rec(l) l.remove(i) visited.remove(i) l = [] for i in nums: visited.add(i) l.append(i) rec(l) visited.remove(i) l.remove(i) return r
풀이_#2
깔끔하고 정돈된 풀이.
**call by reference 를 막기 위해 arr 를 새로 만들어서 인자로 넘겨줌.class Solution: def permute(self, nums: List[int]) -> List[List[int]]: ret = [] def dfs(nums, arr ,ret): if not nums: ret.append(arr) for i in range(len(nums)): dfs(nums[:i] + nums[i+1:], arr + [nums[i]], ret) dfs(nums, [], ret) return ret
'알고리즘' 카테고리의 다른 글
[LeetCode] Power of Two (0) 2022.05.03 70. Climbing Stairs (0) 2022.04.30 [LeetCode] 77. Combinations (0) 2022.04.28 [LeetCode] 206. Reverse Linked List (0) 2022.04.28 [LeetCode] 21. Merge Two Sorted Lists (0) 2022.04.28