试着写了一下之前做过的类似的题用的方法,不过好像效率不太高。
这个算法的时间复杂度是O(N),空间复杂度是O(N)。
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
res = []
def recursion(x):
if x == len(nums)-1:
cp = copy.deepcopy(nums)
res.append(cp)
return
d = set()
for i in range(x, len(nums)):
if nums[i] not in d:
d.add(nums[i])
nums[i], nums[x] = nums[x], nums[i]
recursion(x+1)
nums[i], nums[x] = nums[x], nums[i]
recursion(0)
return res
PREVIOUSmq034.移除无效的括号
NEXTlc049.字母异位词分组