From aa2b383420ca93805cb81723eb56c7cbc8fe8436 Mon Sep 17 00:00:00 2001 From: Gabriel Donnan <47415809+gabedonnan@users.noreply.github.com> Date: Sun, 15 Jan 2023 15:19:21 +0000 Subject: [PATCH] Create permutations-II.py Has to implement DFS in order to operate fast enough to pass the new conditions. Uses copy.deepcopy to prevent lists from being retroactively destroyed --- permutations-II.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 permutations-II.py diff --git a/permutations-II.py b/permutations-II.py new file mode 100644 index 0000000..322cb89 --- /dev/null +++ b/permutations-II.py @@ -0,0 +1,24 @@ +import copy +class Solution: + def permuteUnique(self, nums: List[int]) -> List[List[int]]: + res = [] + nums = sorted(nums) + used = [False]*len(nums) + li = [] + self.dfs(nums, used, li, res) + return res + + def dfs(self, nums, used, li, res): + if len(li) == len(nums): + res.append(copy.deepcopy(li)) + return + for i in range(len(nums)): + if used[i]: + continue + if i > 0 and (nums[i] == nums[i-1]) and not used[i-1]: + continue + used[i] = True + li.append(nums[i]) + self.dfs(nums, used, li, res) + used[i] = False + li.pop()