LeetCode热题100-全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

标准回溯题,回溯的思想是一种试错 + 撤销的算法思想:

  1. 做出一个选择
  2. 递归走下去
  3. 发现走不通 / 走完了
  4. 撤销选择,回到上一步(这一步叫回溯)
python 复制代码
class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        res = []

        def backtrack(path, used):
            if len(path) == len(nums):
                res.append(path.copy())
                return
            
            for i in range(len(nums)):
                if not used[i]:
                    used[i] = True
                    path.append(nums[i])

                    backtrack(path, used)
                    path.pop()
                    used[i] = False
            
        backtrack([], [False] * len(nums))
        return res
相关推荐
钟小羊职业履历核验专家6 分钟前
履历真实性异常的补证与独立复核如何完成
职场和发展
Cccp.12314 分钟前
【leetcode】(十四)从暴力递归到动态规划
数据结构·算法·leetcode·动态规划
旖旎夜光1 小时前
LeetCode 215: 数组中的第K个最大元素 (快速排序) —— 题解
c++·学习·算法·leetcode·力控
技术胖1 小时前
奎爷巡演 AIGC 视频教程 文档
算法
德彪稳坐倒骑驴1 小时前
Leetcode力扣刷题记录与题解
算法·leetcode·职场和发展
lzhdim8 小时前
AI的分类
人工智能·算法·机器学习·分类·数据挖掘
凤凰院凶涛QAQ10 小时前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法
w_zero_one12 小时前
算法--模拟
java·数据结构·算法
秋天的怀念_David13 小时前
算法一千零一夜 · 第十三夜 幻方,武侠世界里的数学迷宫
java·程序人生·算法
lll235269177913 小时前
HR如何快速整理面试沟通内容?
面试·职场和发展