46. 全排列

46. 全排列

回溯

java 复制代码
class Solution {
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> path = new ArrayList<>();
    boolean[] vis;

    public List<List<Integer>> permute(int[] nums) {
        vis = new boolean[nums.length];
        backtrack(nums);
        return res;
    }

    void backtrack(int[] nums){
        if(path.size() == nums.length){
            res.add(new ArrayList<>(path));
            return;
        }

        for(int i = 0; i < nums.length; i++){
            if(vis[i]) continue;
            path.add(nums[i]);
            vis[i] = true;
            backtrack(nums);
            vis[i] = false;
            path.remove(path.size() - 1);
        }
    }
}
相关推荐
Zephyrtoria22 分钟前
区间合并:区间合并问题
java·开发语言·数据结构·算法
柏箱2 小时前
容器里有10升油,现在只有两个分别能装3升和7升油的瓶子,需要将10 升油等分成2 个5 升油。程序输出分油次数最少的详细操作过程。
算法·bfs
Hello eveybody4 小时前
C++介绍整数二分与实数二分
开发语言·数据结构·c++·算法
Mallow Flowers6 小时前
Python训练营-Day31-文件的拆分和使用
开发语言·人工智能·python·算法·机器学习
GalaxyPokemon6 小时前
LeetCode - 704. 二分查找
数据结构·算法·leetcode
leo__5207 小时前
matlab实现非线性Granger因果检验
人工智能·算法·matlab
GG不是gg7 小时前
位运算详解之异或运算的奇妙操作
算法
FF-Studio9 小时前
万物皆数:构建数字信号处理的数学基石
算法·数学建模·fpga开发·自动化·音视频·信号处理·dsp开发
叶子爱分享10 小时前
从事算法工作对算法刷题量的需求
算法
勇闯IT10 小时前
有多少小于当前数字的数字
java·数据结构·算法