算法提高之LeetCode刷题数据结构和算法分析

全排列

2020-04-25  本文已影响0人  _阿南_

题目:

给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

题目的理解:

每一位在同一个位置出现n次。一个位置for循环放置所有的数,剩下的数依次操作。

python实现

from typing import List

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        def recycle(childNums: List[int]) -> List[List[int]]:
            if 1 == len(childNums):
                return [childNums]

            arrayList = list()
            for index, num in enumerate(childNums):
                childNumsTemp = childNums.copy()
                childNumsTemp.remove(num)
                childList = recycle(childNumsTemp)

                for numList in childList:
                    resultList = [num]
                    resultList.extend(numList)

                    arrayList.append(resultList)

            return arrayList

        return recycle(nums)

想看最优解法移步此处

提交

ok

分数有点低,不过是一次通过,还是蛮开心的。

// END 有时候放松自己,可以获得更高的专注力和精力

上一篇下一篇

猜你喜欢

热点阅读