力扣 中等 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;
            }
        }
    }
}
相关推荐
南宫生10 分钟前
力扣-图论-15【算法学习day.65】
java·学习·算法·leetcode·图论
mit6.82413 分钟前
[数据结构#2] 图(1) | 概念 | 邻接矩阵 | 邻接表 | 模拟
算法·深度优先·图论
Menior_16 分钟前
数据结构—图
数据结构·c++·算法
洛嘚22 分钟前
@FeignClient用于Nacos微服务间的接口调用
java·服务器
Q_192849990623 分钟前
基于Spring Boot的社区药房系统
java·spring boot·后端
lly_csdn12336 分钟前
【路径规划】原理及实现
python·算法·路径规划
YGGP37 分钟前
【LeetCode】将有序数组转换为二叉搜索树
数据结构·算法·leetcode
小蜗牛慢慢爬行37 分钟前
Java8 Stream编码问题
java·开发语言·后端·面试
m0_6724496039 分钟前
Java前后端分离实现登陆
java·大数据·开发语言
weixin_5375904544 分钟前
《Java编程入门官方教程》第七章练习答案
java·算法