【专题三:穷举vs暴搜vs深搜vs回溯vs剪枝】46. 全排列

1.题目解析

2.讲解算法原理

1.首先画出决策树,越详细越好

2.设计代码

  • 全局变量
    • List<List<Integer>> ret
    • List<Integer> path
    • boolean[] check
  • dfs函数
    • 仅关心某一节点在干什么
  • 细节问题
  • 回溯
    • 干掉path最后一个元素
    • 修改check权限
  • 剪枝
    • check中为true的不能使用,要剪掉
  • 递归出口
    • 遇到叶子结点的时候,直接添加结果

3.编写代码

java 复制代码
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(nums.length==path.size()){
            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);
            }
            
            
        }
    }
}
相关推荐
YGGP1 分钟前
【Golang】LeetCode 62. 不同路径
算法·leetcode
资生算法程序员_畅想家_剑魔7 分钟前
算法-回溯-14
java·开发语言·算法
致Great13 分钟前
大模型对齐核心技术:从第一性原理完整推导 PPO 算法!
人工智能·算法·大模型·agent·智能体
_w_z_j_14 分钟前
二叉树的右视图(BFS或DFS)
算法·深度优先·宽度优先
cyyt29 分钟前
深度学习周报(12.22~12.28)
人工智能·算法·机器学习
WBluuue31 分钟前
Codeforces Global 31 Div1+2(ABCD)
c++·算法
智算菩萨31 分钟前
【Python机器学习】回归模型评估指标深度解析:MAE、MSE、RMSE与R²的理论与实践
python·机器学习·回归
Cherry的跨界思维37 分钟前
【AI测试全栈:认知升级】2、AI核心概念与全栈技术栈全景
人工智能·深度学习·机器学习·语言模型·ai测试·ai全栈·测试全栈
会员果汁44 分钟前
算法-并查集-C
c语言·开发语言·算法
Master_oid1 小时前
机器学习27:增强式学习(Deep Reinforcement Learn)②
人工智能·学习·机器学习