leetcode-46 全排列

給定一個沒有重複數字的序列,返回其所有可能的全排列。

示例:

輸入: [1,2,3]
輸出:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

思路:[1,2,3,4]=([1,2,3]+4) = [4,1,2,3]+[1,4,2,3]+[1,2,4,3]+[1,2,3,4]

          [1,2,3]   =([1,2]+3) = [3,1,2]+[1,3,2]+[1,2,3]

          由此可知採用遞歸求解

代碼:

class Solution(object):

    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        if len(nums)==1:
            return [nums]

        mylist=self.permute(nums[1:])
        l=len(mylist)
        k=len(mylist[0])
        for i in range(l):
            for j in range(k):
                mylist.append(mylist[i][0:j]+[nums[0]]+mylist[i][j:])
            mylist[i]=mylist[i]+[nums[0]]
        return mylist

a=Solution()
print a.permute([1,2,3])

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章