LeetCode 46 [Permutations]

原題

給定一個數字列表,返回其所有可能的排列。

給出一個列表[1,2,3],其全排列為:

[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

解題思路

  • 與subset題相似,只不過當len(path) == len(list)的時候才會將path加入到結果
  • 對于每一層,遍歷list中的元素,把不在path中的元素加入path

完整代碼

class Solution(object):
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        if nums is None:
            return []
        result = []
        self.helper(nums, [], result)
        return result
        
    def helper(self, List, path, result):
        if len(path) == len(List):
            result.append(path[:])
            return
        
        for i in range(len(List)):
            if List[i] in path:
                continue
            path.append(List[i])
            self.helper(List, path, result)
            path.pop()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 題目 Given a collection of distinct numbers, return all pos...
    persistent100閱讀 340評論 0 0
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,769評論 0 33
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 動態規劃(Dynamic Programming) 本文包括: 動態規劃定義 狀態轉移方程 動態規劃算法步驟 最長...
    廖少少閱讀 3,327評論 0 18
  • 唯愿每年的九月一都令人驚嘆。 唯愿每年的九月一從睜眼都感受到美好,不止源于他人之處,更期盼來自于自我滿足。 唯愿每...
    三你個八閱讀 256評論 0 0