力扣 中等 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;
            }
        }
    }
}
相关推荐
玖剹7 分钟前
记忆化搜索题目(二)
c语言·c++·算法·leetcode·深度优先·剪枝·深度优先遍历
rchmin7 分钟前
Java内存模型(JMM)详解
java·开发语言
Wpa.wk15 分钟前
Tomcat的安装与部署使用 - 说明版
java·开发语言·经验分享·笔记·tomcat
吧啦蹦吧20 分钟前
java.lang.Class#isAssignableFrom(Class<?> cls)
java·开发语言
都是蠢货27 分钟前
drop delete和truncate的区别?
java·开发语言
凤凰战士芭比Q43 分钟前
Nexus仓库(maven仓库、Yum仓库、APT仓库)
java·maven
864记忆1 小时前
Linux操作系统自带的测试内存泄漏的命令
java·linux·运维
Xy-unu1 小时前
[LLM]AIM: Adaptive Inference of Multi-Modal LLMs via Token Merging and Pruning
论文阅读·人工智能·算法·机器学习·transformer·论文笔记·剪枝
Hcoco_me1 小时前
算法选型 + 调参避坑指南
算法
Jul1en_1 小时前
【算法】分治-归并类题目
java·算法·leetcode·排序算法