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
相关推荐
8Qi83 分钟前
LeetCode 121 & 122:股票买卖问题(DP 对比题解)✅
算法·leetcode·职场和发展·动态规划
一只齐刘海的猫14 分钟前
【Leetcode】 接雨水
java·算法·leetcode
南境十里·墨染春水31 分钟前
讲讲移动语义
算法
西凉的悲伤40 分钟前
Guava类库——Range连续区间
java·算法·guava
菜菜的顾清寒41 分钟前
力扣HOT(100)54多维动态规划-最长公共子序列
算法·leetcode·动态规划
随意起个昵称1 小时前
线性dp-LIS题目3(合唱队形)
算法
小六学编程1 小时前
二分查找详解:从普通二分到左右边界
算法·c/c++
wayz111 小时前
Volume:PVO(百分比成交量震荡指标)技术指标详解
算法·金融·数据分析·量化交易·特征工程
毕竟是shy哥1 小时前
PromptHash:基于亲和提示协同学习的自适应哈希检索跨模态算法
学习·算法·哈希算法
甄心爱学习1 小时前
【项目实训(个人12)】
人工智能·python·算法