#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Permutations
Given a collection of distinct numbers, return all possible permutations.(没有重复数字的全排列)
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
'''
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
length = len(nums)
if length == 0:
return []
ret = []
self.__permute(nums,0,length,ret)
return ret
def __permute(self,nums,start,length,ret):
if start == length - 1:
ret.append(list(nums)) #如果不加list结果是错的,因为引用
return
#两两交换
for index in range(start,length):
tmp = nums[start]
nums[start],nums[index] = nums[index],tmp
self.__permute(nums,start + 1,length,ret)
tmp = nums[start]
nums[start],nums[index] = nums[index],tmp
if __name__ == "__main__":
s = Solution()
print s.permute([1,2,3])
32.1 leetcode - 没有重复数据的全排列
最新推荐文章于 2022-10-10 15:18:40 发布