力扣 中等 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;
            }
        }
    }
}
相关推荐
leoufung4 分钟前
动态规划DP 自我提问模板
算法·动态规划
万小猿9 分钟前
互联网大厂Java求职面试模拟实战:谢飞机的三轮提问与详细解答
java·大数据·spring boot·微服务·面试·技术解析·互联网大厂
Coder_Boy_11 分钟前
基于SpringAI企业级智能教学考试平台试卷管理模块全业务闭环方案
java·大数据·人工智能·spring boot·springboot
C雨后彩虹11 分钟前
synchronized底层原理:JVM层面的锁实现
java·synchronized
爱编程的小吴11 分钟前
【力扣练习题】热题100道【哈希】560. 和为 K 的子数组
算法·leetcode·哈希算法
Hi梅11 分钟前
批量处理框架 (Batch Processing Framework)
java·服务器·batch
Swift社区17 分钟前
LeetCode 463 - 岛屿的周长
算法·leetcode·职场和发展
筑梦之路17 分钟前
Jenkins 构建部署多模块Java应用流水线参考——筑梦之路
java·运维·jenkins
皮卡蛋炒饭.18 分钟前
宽搜bfs与深搜dfs
算法·宽度优先
shayudiandian20 分钟前
【Java】常用类
java