leetcode hot100 全排列

news/2024/7/24 6:15:28 标签: leetcode, 算法, 数据结构

在这里插入图片描述
在本题中,是要求我们求一个不重复数组的全排列,那么全排列,一定是长度和数组长度一致的,并且,排列问题是有顺序的,即1,2,3和1,3,2是两个不同的排列。

那么,本题也可以用回溯来做,但是,和之前的组合问题中的回溯不太一样,组合中为了避免产生相同元素不同顺序的情况,采用了startIndex来进行避免,即下一次递归从startIndex+1开始,这样能够避免选取到之前已经选取过的元素了。

但是,本题是全排列问题,恰恰是需要选择重复的,所以这时候我们不采用startIndex,而是采用一个布尔类型的used[],当我们目前选取的元素的索引是i时,就把used[i]置为true,然后再进行遍历递归,之后再回溯即可。

在这里插入图片描述

class Solution {

    List<List<Integer>> result = new ArrayList<>();// 存放符合条件结果的集合
    LinkedList<Integer> path = new LinkedList<>();// 用来存放符合条件结果
    boolean[] used;
    public List<List<Integer>> permute(int[] nums) {
        if (nums.length == 0){
            return result;
        }
        used = new boolean[nums.length];
        permuteHelper(nums);
        return result;
    }

    private void permuteHelper(int[] nums){
        if (path.size() == nums.length){
            result.add(new ArrayList<>(path));
            return;
        }
        for (int i = 0; i < nums.length; i++){
            if (used[i]){
                continue;
            }
            used[i] = true;
            path.add(nums[i]);
            permuteHelper(nums);
            path.removeLast();
            used[i] = false;
        }
    }
}

http://www.niftyadmin.cn/n/5347456.html

相关文章

MVC架构模式与三层架构

提示&#xff1a;博客中的图片来源于动力节点在B站的视频讲解。 MVC架构模式与三层架构 一、三层架构二、MVC&#xff08;model view controller&#xff09;1.MVC 框架的工作流程&#xff08;1&#xff09;JSP Servlet javabean实现MVC。&#xff08;2&#xff09;SSM&#…

大数据数据流分析和处理的工具pig,从入门到精通!

介绍&#xff1a;Pig是一种数据流语言和运行环境&#xff0c;用于处理和分析大数据。 Pig由两个主要部分构成&#xff1a; Pig Latin语言&#xff1a;这是一种用于描述数据流的高级语言&#xff0c;它允许用户以较为简洁的方式编写数据处理和转换任务。 Pig执行环境&#xff1a…

从c到c++——02:缺省参数

在声明或定义函数时&#xff0c;可以选择给参数一个具体的值&#xff08;常数或者宏定义&#xff09;&#xff0c;之后调用函数时就可以选择不传该参数。 某些函数中有这样一种形参&#xff0c;当函数多次被调用时他们往往都被赋予一个相同值&#xff0c;我们把这个反复出现的值…

mysql中获取一段时间日期

SELECTdate_add(date_sub(20230201, interval 1 day), INTERVAL (cast(help_topic_id AS signed INTEGER) 1) day) as tttt FROM mysql.help_topic WHERE help_topic_id < DATEDIFF(20230201, date_sub(20230101, interval 1 day)) ORDER BY help_topic_id其中mysql.help_t…

低代码开发助力业务效能高速提升

随着数字化转型在各行各业的推进&#xff0c;企业对于快速开发和交付应用的需求不断增加。传统的软件开发方法往往需要大量的时间和资源&#xff0c;限制了业务效能的提升。而低代码开发平台的出现&#xff0c;为企业提供了一种高效、快速、灵活的开发方式&#xff0c;极大地提…

仰暮计划|“邻里家年长的女孩总是会承担起家中的责任,洗衣、喂猪、做饭、弟妹、下地干农活等等”

仰暮计划|“邻里家年长的女孩总是会承担起家中的责任&#xff0c;洗衣、喂猪、做饭、弟妹、下地干农活等等” 今天在楼下见到了李贵玲奶奶&#xff0c;一如往常&#xff0c;她拿着一把扇子向我们缓缓走来。我主动上前&#xff0c;像我们平时聊天一样&#xff0c;打开了她记忆的…

将Android APP安装到sm8550 HDK的NVMe SSD

APP存储路径 在Android中&#xff0c;App在运行过程中主要访问的数据路径通常包括以下几个方面&#xff1a; 内部存储&#xff08;Internal Storage&#xff09;&#xff1a;App会访问其私有的内部存储空间&#xff0c;这个空间通常位于&#xff1a; /data/data/<package…

谷歌推出 AutoRT 机器人代理大规模编排的具体基础模型,远程操作和收集 77,000 个机器人事件

演示 AutoRT 向多个建筑物中的20多个机器人提出指令&#xff0c;并通过远程操作和自主机器人策略收集77,000个真实的机器人事件。实验表明&#xff0c;AutoRT 收集的此类“野外”数据明显更加多样化&#xff0c;并且 AutoRT 使用 LLMs 允许遵循能够符合人类偏好的数据收集机器人…