1. 程式人生 > >Leetcode ——46.全排列問題

Leetcode ——46.全排列問題

全排列

題目描述

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

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

題目理解

對給定數組裡面的數進行全排列,最後返回一個有 C n n

C_n^n 個排列的陣列

實現程式碼

class Solution(object):
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        res = []
        visited = [True] * len(nums)# 生成一個數組   [True, True, True]
        self.
dfs(nums, 0, [], res, visited) return res def dfs(self, nums, pos, temp, res, visited): if pos == len(nums):# pos = len(nums)時將temp新增到res res.append(temp[:]) return for i in range(len(nums)): if visited[i]: visited[i] =
False #將True變為False temp.append(nums[i]) self.dfs(nums, pos + 1, temp, res, visited) visited[i] = True temp.pop()# 彈出最上面的一個元素 if __name__ == '__main__': print(Solution().permute(["2","3","4"]))