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
相关推荐
饼饼学习空间智能2 小时前
遥操作数据能否提升机器人自主化水平?详解模仿学习、仿真放大与Sim2Real闭环
人工智能·算法
间歇性努力持续性发呆的野生快乐选手2 小时前
dfs回溯,bfs枚举,完全背包
c++·算法·深度优先·宽度优先
郝学胜_神的一滴2 小时前
干货版《算法导论》17:双数极值配对与卡牌手牌编码最优解
数据结构·算法
nike0good3 小时前
Codeforces Round 1101 (Div. 2) 题解
算法
中年阿甘3 小时前
解析式布局-二次线长布局
线性代数·算法·矩阵
程序喵大人3 小时前
【C++进阶】STL算法与函数对象 -【C++进阶】STL算法与函数对象
开发语言·c++·算法
星轨初途4 小时前
LeetCode 热题 100——day6 三数之和
数据结构·c++·算法·leetcode·职场和发展
鹿角片ljp4 小时前
LeetCode 53. 最大子数组和
算法·leetcode·职场和发展
江屿风5 小时前
【科普】【差集&交集概念落地云相册】流食般投喂
开发语言·c++·笔记·算法·云相册
数模竞赛Paid answer5 小时前
2023年五一杯数学建模A题无人机定点投放问题求解全过程完整文档及程序
算法·数学建模·无人机·五一杯