[Leetcode 46][Medium]-全排列-回溯(全排列问题)

news2024/11/15 3:47:22

目录

一、题目描述

二、整体思路

三、代码


一、题目描述

原题地址

二、整体思路

        对于全排列问题,很明显要用回溯法。但是和组合问题不一样的是全排列问题是可以取先前遍历的元素的。因此需要另外新建一个状态数组来存储所有元素是否被访问过的状态。回溯时把状态数组的当前元素的状态恢复成未访问。

三、代码

class Solution {
    List<List<Integer>> res=new ArrayList<>();
    List<Integer> temp=new ArrayList<>();
    public List<List<Integer>> permute(int[] nums) {
        boolean[] visited=new boolean[nums.length];
        backtrace(visited,nums);
        return res;
    }
    void backtrace(boolean[] visited,int[] nums){
        if(temp.size()==nums.length){
            res.add(new ArrayList<>(temp));
        }
        for(int i=0;i<nums.length;i++){//数组中所有元素都有可能取到,因此要遍历数组所有元素
            if(visited[i]){//如果当前元素已经被访问过则直接访问下一个元素
                continue;
            }
            temp.add(nums[i]);
            visited[i]=true;
            backtrace(visited,nums);
            temp.remove(temp.size()-1);
            visited[i]=false;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT Sql 实现多个股票成交明细数据文件制成数据库并支持查询

一.背景 上一篇我们学会了,如何用python自动化爬出交易软件的历史成交明细分笔数据,如果你没看到的话,这里有链接: AI 通过python脚本自动化导出交易软件某一天的分笔成交明细-CSDN博客,我们接着讲如何讲用QT分析这些数据并制成数据库文件来查询。 二.效果图 三.实现步骤 …

【Qt】关于QMenuBar创建方式的讨论

关于QMenuBar创建方式的讨论 如果在创建项目的时候&#xff0c;没有勾选自动生成ui文件&#xff0c;此时上述代码是正确的&#xff1b;而如果勾选了自动生成ui文件&#xff0c;上述代码则会出现内存泄漏的问题。因为Qt已经生成了一个QMenuBar了 由于之前程序已经自己创建好了一…

Mysql基础练习题 1083.销售分析2 (力扣)

编写一个解决方案&#xff0c;报告那些买了 S8 而没有买 iPhone 的 买家。注意&#xff0c;S8 和 iPhone 是 Product 表中显示的产品。 题目连接&#xff1a; https://leetcode.cn/problems/sales-analysis-ii/description/ 建表插入数据&#xff1a; Create table If Not …

CentOS 超详细保姆级安装教程(每步都有截图)

文章目录 下载安装VMware检查网络适配器Centos 下载创建虚拟机启动虚拟机配置静态IP 这里提一下, Centos 相关的操作系统, Linux社区已经不再维护了, 建议装 Ubuntu 下载安装VMware 点我跳转 | VMware WorkStation Pro DownLoad 官网下载速度慢的可以使用我百度网盘分享的链接…

简易爬虫平台设计与实现

本来没有架构&#xff0c;写的组件多了&#xff0c;就有了架构。 前言 早期&#xff0c;我为了抓取mp3和一些网站文章&#xff0c;随意写了些零零星星的代码。后来&#xff0c;使用了scrapy和webmagic等爬虫框架&#xff0c;算是走上了正轨。又后来&#xff0c;东一个组件&…

手撕Python之条件语句和循环语句

1.比较运算符 2.判断 单条件判断&#xff0c;我们就需要用到if 程序的正常执行流程是从上往下依次执行 我们可以使用流程控制语句中的if语句来根据不同的情况执行不同的代码 单个条件的判断使用if关键字 两个条件使用if…else 多个条件使用if…elif…else if关键字判断后…

Ho-Lee利率模型的实现

一&#xff1a;Ho-Lee利率模型的介绍 Ho-Lee模型是由Thomas Ho和Sang-bing Lee在1986年提出的&#xff0c;用于描述利率期限结构变动的模型。该模型基于无套利机会假设&#xff0c;认为当前的利率期限结构包含了人们对未来利率预测的所有信息&#xff0c;因此利率期限结构的变…

006.Python爬虫系列_Web前端基础HTML+CSS

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数…

中仕公考:公务员公示期一过就能入职了吗?

公务员政审结束后&#xff0c;拟录用人员名单将进行为期5-7天的公示。此环节是确保广泛收集公众意见&#xff0c;如果发现候选人存在问题&#xff0c;相关人士可以向负责部门举报。如果经过调查确认存在问题&#xff0c;该候选人可能无法顺利通过公示期。 公务员职位公示期结束…

Python和JAX及MATLAB小波分析导图

&#x1f3af;要点 离散小波变换和逆离散小波变换时间序列谱分析计算比例图和频谱图显示数据莫莱小波时频数据表征海表温度异常的区域平均值捕捉市场波动时间频率关联信息信号和图像分解压缩重建降维分析金融波动连续小波卷积网络和离散小波信号分类图像处理、提取地震图速度和…

随笔1:数学建模与数值计算

目录 1.1 矩阵运算 1.2 基本数学函数 1.3 数值求解 数学建模与数值计算 是将实际问题通过数学公式和模型进行描述&#xff0c;并通过计算获得模型解的过程。这是数学建模中最基本也是最重要的环节之一。下面是详细的知识点讲解及相应的MATLAB代码示例。 1.1 矩阵运算 知识点…

突破代码:克服编程学习中的挫折感

目录 一、心态调整&#xff1a;心理韧性的培养 接受挫折是学习的一部分 设置实际的学习目标 保持学习的乐趣 二、学习方法&#xff1a;策略的实施 逐步解决问题 寻找多样的学习资源 定期复习与实践 三、成功经验&#xff1a;实例的启示 Debug的技巧掌握 算法的深入理…

STM32的寄存器详解

目录 前言 一、 STM32 单片机寄存器概述 1.寄存器的作用 2.寄存器的分类 二、STM32 内核寄存器 1.程序计数器&#xff08;PC&#xff09; 2.堆栈指针&#xff08;SP&#xff09; 3.链接寄存器&#xff08;LR&#xff09; 4.控制寄存器&#xff08;CONTROL&#xff09;…

Java项目服务器CPU飙升问题排查

目录 一.前言 二.程序日志定位 三.Mysql事务定位 四.程序代码定位 五.微服务注册异常定位 六.异常进程定位 6.1.进程的线程信息分析 6.2.进程的堆内存分析 七.总结 八.JVM分析工具推荐 一.前言 系统出现反应慢,打不开,登录不上等问题。 二.程序日志定位 通过程序日…

DOCKER(国内镜像源,安装相关微服务组件,py以及jar包的docker打包(上传私有云以及输出本地文件))

前言 之前单独在旧的帖子下面更新的时候&#xff0c;码字码了1000多字的时候电脑蓝了&#xff0c;重启什么东西都没有&#xff0c;我红了。平台上面的自动保存是针对新文章的。 这周因为隔壁有项目要验收了&#xff0c;我的好大哥就把我派过去配合赶进度了&#xff0c;还体验了…

计频器(Keysight 53210A)

计频器(Keysight 53210A) 一、基本介绍 探棒有两种,第一种是仪器自带的原厂探头,第二种是专门测试晶振的探头,我们的大部分的测试都是测32Khz和 24Mhz的频率,因此测32Khz频率的时候选用原厂探头、测晶振24Mhz频率的时候选用专门测晶振的探头(如下图所示)。----信号频…

YOLO实践

一. 环境安装 参考视频 Pytorch环境安装细节 pytorch安装&#xff1a;一个单独的环境中&#xff0c;能使用pip就尽量使用pip&#xff0c;实在有问题的情况&#xff0c;例如没有合适的编译好的系统版本的安装包&#xff0c;再使用conda进行安装&#xff0c;不要来回混淆CUDA是…

上网行为管理系统的功能有哪些(员工全网行为管理解决方案)

员工在工作中的上网行为日益多样化&#xff0c;这不仅带来了工作效率的提升&#xff0c;也带来了诸多管理上的挑战。 网络黑客攻击、数据泄露、非工作相关活动的占用带宽等问题层出不穷&#xff0c;对企业的信息安全和运营效率构成了严重威胁。 因此&#xff0c;上网行为管理…

HIC-YOLOv5:改进的YOLOv5用于小对象检测

HIC-YOLOv5: Improved YOLOv5 For Small Object Detection 摘要 小目标检测是物体检测领域的一大难点。已有的一些工作对这一任务提出了改进&#xff0c;例如增加若干个注意块或改变特征融合网络的整体结构。然而&#xff0c;这些模型的计算开销很大&#xff0c;使得部署实时目…

Leetcode面试经典150题-136.只出现一次的数字

解法都在代码里&#xff0c;不懂就留言或者私信 这个题不知道为啥会考&#xff0c;过于简单了&#xff0c;我解题写注释用了两分钟不到&#xff0c;5行代码。。。 class Solution {public int singleNumber(int[] nums) {/**这个题目确实时间的题&#xff0c;根据位运算法则我…