力扣 中等 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;
            }
        }
    }
}
相关推荐
玹外之音16 分钟前
Spring AI MCP 无状态服务器实战:构建AI智能用户管理系统
java·后端
java干货18 分钟前
Redis 的 ZipList 是什么?它是怎么解决内存碎片问题的?
java
蜡笔小马20 分钟前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
失重外太空啦25 分钟前
Tomcat
java·服务器·tomcat
屎到临头想搅便25 分钟前
TOMCAT
java·tomcat
m0_5312371731 分钟前
C语言-数组练习进阶
c语言·开发语言·算法
Sylvia33.41 分钟前
火星数据:解构斯诺克每一杆进攻背后的数字语言
java·前端·python·数据挖掘·数据分析
超级大福宝44 分钟前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
糖猫猫_1 小时前
Kite:两种方式实现动态表名
java·后端