class Solution:
def nextpermutation(self,idx):
if idx == self.n:
self.res.append(self.L.copy())
return
for i in range(idx,self.n):
self.L[i],self.L[idx] = self.L[idx],self.L[i]
self.nextpermutation(idx + 1)
self.L[i],self.L[idx] = self.L[idx],self.L[i]
def permute(self, nums: List[int]) -> List[List[int]]:
self.res = []
self.L = nums.copy()
self.n = len(nums)
self.nextpermutation(0)
return self.res
由于本题的数据范围较小,因此可以直接用递归实现。
手动实现一个next_permutation即可。
由于本题对于全排列的顺序不做要求,因此可以直接减少约 O ( n l o g 2 n ) O(nlog_2n) O(nlog2n)的排序时间。
题目链接
原创不易,感谢支持!