Advertisement

LeetCode之排列与组合及Python实现

阅读量:

在LeetCode平台上设有两道极具代表性的题目,在解决一个数组的排列与组合问题时,深度优先搜索算法都可通过深度优先递归的方式进行求解。让我们一起研究探讨这个问题。

排列[ Permutations ]

题:Consider a set of distinct integers and generate every possible permutation.

Example:

复制代码
    Input: [1,2,3]
    Output:
    [
      [1,2,3],
      [1,3,2],
      [2,1,3],
      [2,3,1],
      [3,1,2],
      [3,2,1]
    ]

解决方法:可以把全排列问题分解为子问题直至直接求解。例如数组 nums = [1, 2, 3] 中可首先固定数字 1 然后对剩余元素 [2, 3] 进行全排的结果加上前面固定的数字 1 接着将数组中的第二个数字 2 固定下来并对剩下的元素 [1, 3] 进行全排列 然后在每个排列后添加前面固定的数字 2 最后依此类推完成整个过程

以下为相应的代码实现。选定一个基准值作为固定的参数,并将其放置于起始索引处。并对从起始索引往后的所有元素进行同样的操作。

需要注意的是,在递归完成后(需注意),应将

全部评论 (0)

还没有任何评论哟~