力扣 中等 46.全排列

文章目录

题目介绍

题解

代码如下:

java 复制代码
class Solution {
    List<List<Integer>> res = new ArrayList<>();// 存放符合条件结果的集合
    List<Integer> path = new ArrayList<>();// 用来存放符合条件结果
    boolean[] used; // 标记数组,记录数字是否被使用过
    public List<List<Integer>> permute(int[] nums) {
        used = new boolean[nums.length];   
        dfs(nums);
        return res;
    }
    public void dfs(int[] nums) {
        if (path.size() == nums.length) {
            res.add(new ArrayList<>(path));
            return;
        }
        for (int i = 0; i < nums.length; i++) {
            if (used[i] == false) {
                path.add(nums[i]);
                used[i] = true;
                dfs(nums);
                // 回溯,撤销选择并从路径中移除当前数字      
                path.remove(path.size() - 1);
                used[i] = false;
            }
        }
    }
}
相关推荐
Yupureki2 分钟前
《C++实战项目-高并发内存池》8. 最终性能优化与测试
c语言·开发语言·数据结构·c++·算法·性能优化
隔壁小邓4 分钟前
在Java中实现优雅的CQRS架构
java·开发语言·架构
DeepModel7 分钟前
【概率分布】均匀分布的原理、推导与Python实现
python·算法·概率论
一叶落4388 分钟前
LeetCode 74 | 搜索二维矩阵(C语言版题解)
c语言·数据结构·c++·算法·leetcode·矩阵·动态规划
罗湖老棍子9 分钟前
星际信号塔 —— 单调栈经典应用详解
数据结构·算法·单调栈
河边小咸鱼9 分钟前
pdd校招实习生内推【实时更新链接】2027届实习、2026届春招
java·c++·golang
iAkuya11 分钟前
(leetcode)力扣100 96.只出现一次的数字(位运算)
算法·leetcode·职场和发展
zzb158013 分钟前
Agent学习-Reflection框架
java·人工智能·python·学习·ai
Tisfy16 分钟前
LeetCode 1622.奇妙序列:懒更新
数学·算法·leetcode·题解·设计
無限進步D16 分钟前
高精度算法 cpp
c++·笔记·算法·入门