第一种思路: 回溯法
class Solution:
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
r = []
self.tt(0, nums, r)
return r
def tt(self, i, nums, result):
if i < len(nums):
self.tt(i+1, nums,result)
if i == len(nums)-1:
result.append(nums.copy())
j = i + 1
while j < len(nums):
self.swap(nums,i,j)
self.tt(i+1,nums, result)
self.swap(nums, i, j)
j = j + 1
def swap(self, nums, i, j):
tmp = nums[i]
nums[i] = nums[j]
nums[j] = tmp
第二种思路: leetcode31的下一个排列