递归、搜索与回溯-穷举vs暴搜vs深搜vs回溯vs剪枝:12.全排列

题目链接:46. 全排列(中等)

算法原理:

解法:递归

Java代码:

java 复制代码
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王洋
 * Date: 2025-09-24
 * Time: 21:09
 */
class Solution {
    //自己又写了一遍
    List<List<Integer>> ret;
    List<Integer> path;
    boolean[] check;
    public List<List<Integer>> permute(int[] nums) {
        ret=new ArrayList<>();
        path=new ArrayList<>();
        check=new boolean[nums.length];
        dfs(nums);
        return ret;
    }
    public void dfs(int[] nums){
        //递归出口:该路径达到了数目
        if(path.size()==nums.length){
            ret.add(new ArrayList<>(path));
            return ;
        }
        for(int i=0;i<nums.length;i++){
            if(check[i]==false){
                path.add(nums[i]);
                check[i]=true;
                dfs(nums);
                //回溯->恢复现场
                check[i]=false;
                path.remove(path.size()-1);
            }
        }
    }
}
相关推荐
NAGNIP20 小时前
万字长文!回归模型最全讲解!
算法·面试
之歆20 小时前
Spring AI入门到实战到原理源码-MCP
java·人工智能·spring
知乎的哥廷根数学学派21 小时前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
yangminlei21 小时前
Spring Boot3集成LiteFlow!轻松实现业务流程编排
java·spring boot·后端
qq_3181215921 小时前
互联网大厂Java面试故事:从Spring Boot到微服务架构的技术挑战与解答
java·spring boot·redis·spring cloud·微服务·面试·内容社区
J_liaty21 小时前
Spring Boot整合Nacos:从入门到精通
java·spring boot·后端·nacos
数字化转型202521 小时前
企业数字化架构集成能力建设
大数据·程序人生·机器学习
阿蒙Amon1 天前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
daidaidaiyu1 天前
Spring IOC 源码学习 一文学习完整的加载流程
java·spring
666HZ6661 天前
数据结构2.0 线性表
c语言·数据结构·算法