首页 > 其他分享 >刷刷刷 Day 29 | 46. 全排列

刷刷刷 Day 29 | 46. 全排列

时间:2023-01-30 09:33:46浏览次数:62  
标签:used nums 46 res 29 int new path Day

46. 全排列

LeetCode题目要求

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

示例

输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
解题思路

与组合类似的解题思路,不同的是排序的元素是有序的。

上代码

class Solution {

    private List<List<Integer>> res = new ArrayList<>();
    private Deque<Integer> path = new LinkedList<>();
    boolean[] used;

    public List<List<Integer>> permute(int[] nums) {
        if (nums == null) {
            return res;
        }
        used = new boolean[nums.length];
        backtracking(nums);
        return res;
    }

    private void backtracking(int[] nums) {
        // 终止条件
        if (path.size() == nums.length) {
            res.add(new ArrayList<>(path));
            return;
        }

        // 单层处理
        for (int i = 0;i < nums.length; i++) {
            // 去重
            if (used[i] == true) {
                continue;
            }
            used[i] = true;
            path.add(nums[i]);
            backtracking(nums);
            // 回溯
            path.removeLast();
            used[i] = false;
        }
        
    }
}

附:学习资料链接

标签:used,nums,46,res,29,int,new,path,Day
From: https://www.cnblogs.com/blacksonny/p/17074399.html

相关文章

  • 【YBT2023寒假Day2 C】网格与圆(莫比乌斯反演)(斐蜀定理)
    网格与圆题目链接:YBT2023寒假Day2C题目大意一个长宽都是n的网格,每个格子长宽是1,除了最左下角,每个格子里有一个半径为R的圆,圆心在格子正中心。然后问你站在最左下......
  • Linux day1
    linux的文件系统/:跟目录bin:可执行文件etc:配置文件var/log:日志lib:库头文件,安装包proc:进程相关信息,里面有个cpuinfo路径切换绝对路径:/号开头相对路径......
  • Day08-字典与集合
    一、字典的应用场景列表中有数据有多个元素,且有相应的对应关系时,使用列表不足够表示二、字典的创建dict_data={key:value,key1:value1}1,符号以大括号表示2,数据是以......
  • 算法刷题 Day 27 | ● 39. 组合总和 ● 40.组合总和II ● 131.分割回文串
    今日任务组合总和组合总和II分割回文串详细布置39.组合总和本题是集合里元素可以用无数次,那么和组合问题的差别其实仅在于startIndex上的控制题目链接/......
  • MFC画图程序[2023-01-29]
    MFC画图程序[2023-01-29]具体要求功能要求基本图形的绘制,点、线(直线、折线、随手画)、面(圆、正方形、圆等)颜色、线型、填充设置图形编辑:删除、移动。其他可选(......
  • 决战圣地玛丽乔亚Day02
    OpenFeign:负载均衡+RPC调用启动类添加@EnableFeignClients,业务逻辑接口添加 @FeignClient(name="定义当前客户端client名字") 如果client同名,可以用contextId起别......
  • 2023-1-29
    1、需要在10月份之前完成公司的一次体检(没完成)2、在今年考取驾照(没完成)3、今年最少存15万。(没完成)4、控制打飞机次数,一周最多两次。(没完成)5、不允许咬手指,每天......
  • C++图书借阅信息管理系统[2023-01-29]
    C++图书借阅信息管理系统[2023-01-29]二、图书借阅信息管理系统1.基于动态数组或者链表实现图书借阅信息的管理LibraryMIS,可以使用STL的vector或者list。2.图书信息主要......
  • 刷刷刷 Day 29 | 491. 递增子序列
    491.递增子序列LeetCode题目要求给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。数组中......
  • C语言课程设计题目[2023-01-29]
    C语言课程设计题目[2023-01-29]C语言课程设计题目一、工资调整方案已知文本文件fl.txt中存放了某单位员工的相关信息(不超过3000人),具体数据及存放格式为:每行存放一......