力扣 中等 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;
            }
        }
    }
}
相关推荐
索迪迈科技1 分钟前
算法题(203):矩阵最小路径和
线性代数·算法·矩阵
默默无名的大学生6 分钟前
数据结构——链表的基本操作
数据结构·算法
Neverfadeaway10 分钟前
C语言————冒泡排序(例题2)
c语言·数据结构·算法·冒泡排序·升序排列·降序排列
lssjzmn15 分钟前
构建实时消息应用:Spring Boot + Vue 与 WebSocket 的有机融合
java·后端·架构
渣哥18 分钟前
Java ConcurrentHashMap vs Hashtable:差异、性能与应用场景
java
金銀銅鐵18 分钟前
[Java] 浅析可重复注解(Repeatable Annotation) 是如何实现的
java·后端
柯南二号18 分钟前
【设计模式】【观察者模式】实例
java·开发语言·servlet
Cyan_RA927 分钟前
SpringMVC 执行流程分析 详解(图解SpringMVC执行流程)
java·人工智能·后端·spring·mvc·ssm·springmvc
索迪迈科技28 分钟前
Java-Spring入门指南(四)深入IOC本质与依赖注入(DI)实战
java·开发语言·spring
惊鸿.Jh28 分钟前
1733. 需要教语言的最少人数
算法·leetcode