from itertools import permutations
classSolution(object):defpermute(self, nums):returnlist(map(list,permutations(nums)))
Solution2
next_permutation(nums)메서드 구현
nums[i-1] < nums[i] 인 가장 큰 i 찾기
nums[i:] 범위에서 nums[i-1] < nums[j] 인 가장큰 j 찾기
nums[i-1] 와 nums[j] 를 swap
nums[i:] 를 양 끝에서 가운데 방향으로 swap 반복
code2
classSolution(object):defpermute(self, nums):defnext_permutation(nums, results):
size = len(nums)
i = j = size-1# nums[i-1] < nums[i] 인 가장 큰 i 찾기while i > 0and nums[i-1] >= nums[i] : i-=1if i == 0 : returnFalse# next_permutation impossible# nums[i:] 에서 nums[i-1] 보다 큰 nums[j] 중 가장큰 j 찾기while nums[i-1] >= nums[j] : j-= 1# nums[i-1]과 nums[j] 를 swap
nums[i-1], nums[j] = nums[j], nums[i-1]
# nums[i:] 를 양끝 에서 부터 swap
start,end = i, size-1while start < end:
nums[start],nums[end]=nums[end],nums[start]
start,end = start+1, end-1
results.append(nums[:])
returnTrue
nums.sort()
results=[nums[:]]
while next_permutation(nums,results):passreturn results