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阅读 2,615评论 0 0
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,351评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,954评论 18 399
  • 动态规划(Dynamic Programming) 本文包括: 动态规划定义 状态转移方程 动态规划算法步骤 最长...
    廖少少阅读 8,730评论 0 18
  • 唯愿每年的九月一都令人惊叹。 唯愿每年的九月一从睁眼都感受到美好,不止源于他人之处,更期盼来自于自我满足。 唯愿每...
    三你个八阅读 1,885评论 0 0