Day29|回溯算法part05:491.递增子序列、46.全排列、 47.全排列 II

491. 递增子序列

leetcode上本题叫做非递减子序列,点名序列存在重复元素的情况。

class Solution {private List<Integer> path = new ArrayList<>();private List<List<Integer>> res = new ArrayList<>();public List<List<Integer>> findSubsequences(int[] nums) {backtracking(nums,0);return res;}private void backtracking (int[] nums, int start) {if (path.size() > 1) {res.add(new ArrayList<>(path));}int[] used = new int[201];for (int i = start; i < nums.length; i++) {if (!path.isEmpty() && nums[i] < path.get(path.size() - 1) ||(used[nums[i] + 100] == 1)) continue;used[nums[i] + 100] = 1;path.add(nums[i]);backtracking(nums, i + 1);path.remove(path.size() - 1);}}
}
  • res.add(new ArrayList<>(path));之后不要return,因为要添加树上的所有路径;
  • 用数组used代替hash表,作用时表明等于x的数是否被用过,而不是x是否被用过(去重);
  • nums[i] < path.get(path.size() - 1)约束出来的是递增子序列;
  • 这里不需要used[nums[i] + 100] = 1;因为used每次都会初始化(注意不是成员变量)。

46.全排列

class Solution {private List<List<Integer>> resList = new ArrayList<>();private List<Integer> res = new ArrayList<>();private boolean[] used ;private void backtracking(int[] candidates, int startIndex){if(res.size() == candidates.length){resList.add(new ArrayList<>(res));return;}for(int i = 0; i < candidates.length; i++){if(!used[i]){res.add(candidates[i]);used[i] = true;backtracking(candidates, i);res.remove(res.size() - 1);used[i] = false;}}}public List<List<Integer>> permute(int[] nums) {used = new boolean[nums.length];backtracking(nums, 0);return resList;}
}
  • 与组合不同的是排列有顺序,因此不需要startIndex,但不能选自身,所以用used数组。

47. 全排列II

class Solution {private List<List<Integer>> resList = new ArrayList<>();private List<Integer> res = new ArrayList<>();private boolean used[];private void backtracking(int[] candidates, int startIndex) {if (res.size() == candidates.length) {resList.add(new ArrayList<>(res));return;}for (int i = 0; i < candidates.length; i++) {if(i > 0 && candidates[i-1] == candidates[i] && !used[i - 1]){continue;}if(used[i] == false){used[i] = true;res.add(candidates[i]);backtracking(candidates, i);res.remove(res.size() - 1);used[i] = false;}}}public List<List<Integer>> permuteUnique(int[] nums) {used = new boolean[nums.length];Arrays.sort(nums);backtracking(nums, 0);return resList;}
}

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

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

相关文章

openshift和k8s的差别

OpenShift 是一种基于 Kubernetes 的完整的容器应用平台&#xff0c;支持多种自动化功能&#xff0c;如自动升级、自动扩展、负载均衡、监控和日志记录等。 相比之下&#xff0c;Kubernetes 只是一个容器编排和编排平台&#xff0c;它为容器化应用程序提供自动化部署、扩展、故…

C语言——字符函数和字符串函数(下)

引言 在上一篇中&#xff0c;我们介绍了字符函数和一些字符串函数&#xff0c;在这一篇章中&#xff0c;我们会继续学习字符串函数&#xff0c;那我们现在就开始学习吧&#xff01;&#xff01;&#xff01; 字符串函数 strncpy 1.strncpy的用法 strncpy是一个在C语言中常用…

炫我科技:云渲染领域的佼佼者

随着数字化时代的来临&#xff0c;云渲染技术正逐渐成为影视、游戏、动画等创意产业的重要支柱。在这一领域中&#xff0c;炫我科技凭借其卓越的技术实力、优质的服务以及不断创新的精神&#xff0c;已然成为了云渲染行业的佼佼者。 炫我科技自成立之初&#xff0c;便以打造高…

全排列问题(回溯算法和深搜)

题目&#xff1a;P1706 全排列问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using namespace std;int n,pd[110];//用来标记数字是否被使用过 int a[10]; void print(){for(int i1;i<n;i) cout<<setw(5)<<a[i];cout<<…

tkinter实现通用对账文件解析软件

软件需求 和银行等金融机构合作过程中&#xff0c;经常会有还款计划、放款文件等定时推送的文件&#xff0c;以常见的分隔符进行分隔开&#xff0c;为了在系统出现问题时&#xff0c;快速查找异常数据&#xff0c;写了一个小工具解析这些文件并写入到excel中。 软件功能 将常…

Elasticsearch-桶聚合查询详解

前言 在之前我们详细面熟了es的查询用法&#xff0c;但是es还拥有强大的聚合查询功能&#xff0c;可以得到类似分组&#xff0c;直方图&#xff0c;折线图等数据组合。类似SQL的SUM、AVG、COUNT、GROUP BY Elasticsearch-02-es的restapi使用 概念 1&#xff1a;ES聚合查询流…

是什麼讓WhatsApp行銷如此有效?

還記得在幾年前&#xff0c;WhatsAPP還是個用作於溝通的聊天工具。 但如今&#xff0c;它已轉變為強大的行銷管道&#xff0c;在全球擁有超過20億活躍使用者&#xff0c;為企業以直接、個人化和高度參與的方式與受眾建立聯繫提供了巨大的潛力。 WhatsApp 行銷和電子郵件行銷的…

Maven入门指南:构建与管理Java项目的利器

引言 在Java开发领域&#xff0c;项目构建和管理是一个至关重要的环节。随着项目规模和复杂度的不断增加&#xff0c;有效地管理项目的依赖、构建过程以及部署流程变得尤为关键。在这样的背景下&#xff0c;Apache Maven作为一款优秀的项目管理工具应运而生&#xff0c;成为了…

ChatGPT智能辅助:让学术论文写作更从容自如

ChatGPT无限次数:点击直达 html ChatGPT智能辅助&#xff1a;让学术论文写作更从容自如 引言 学术论文写作一直是许多研究者和学生头疼的问题。无论是构思文章框架、寻找合适的文献资料&#xff0c;还是整合思路、撰写论文正文&#xff0c;都是考验耐心与专业知识的过程。…

浅谈HTTP

浅谈HTTP 要通过netty实现HTTP服务器(或者客户端)&#xff0c;首先你要了解HTTP协议。 HTTP在客户端 - 服务器计算模型中用作请求 - 响应协议。 例如&#xff0c;web浏览器可以是客户端&#xff0c;并且在托管网站的计算机上运行的应用程序可以是服务器。 客户端向服务器提交…

Vue ElementPlus Input 输入框

Input 输入框 通过鼠标或键盘输入字符 input 为受控组件&#xff0c;它总会显示 Vue 绑定值。 通常情况下&#xff0c;应当处理 input 事件&#xff0c;并更新组件的绑定值&#xff08;或使用v-model&#xff09;。否则&#xff0c;输入框内显示的值将不会改变&#xff0c;不支…

异构加速GPU服务器设计方案:904-全国产化异构加速GPU服务器

全国产化异构加速GPU服务器 一、产品介绍 X7340H0是中科可控基于HYGON系列处理器开发的一款全新高端2U双路GPU服务器。X7340H0采用优异的可扩展架构设计&#xff0c;支持高密度扩展GPU加速卡&#xff0c;为深度学习推理场景提供更加安全可靠、高性价比的解决方案。 性能卓越 ●…

全志A40i android7.1 移植wifi驱动的一般流程

一&#xff0c;问题分析 一般情况下移植一款模组&#xff0c;会涉及到驱动&#xff0c;firmware, hal层&#xff0c;方案端的适配。 下面以RTL8723ds为例详细列出移植的通用步骤。 二&#xff0c;移植步骤 1. 移植Wi-Fi驱动 从RTL原厂或者已经支持的其他把内核版本中获取驱动…

C++中string容器的字符串操作

目录 1.c_str() 返回C常量字符串 2.date() 返回C常量字符串 3.substr() 构造子串 4.find() 正向查找&#xff08;查找失败返回npos&#xff09; 5.rfind() 逆向查找&#xff08;查找失败返回npos&#xff09; 6.find_first_of() 正向查找匹配的字符 7.find_last_of() 逆向…

HTML面试题:get和post的区别

get和post都是HTTP中的两种请求方式 区别一&#xff0c;参数位置&#xff1a;GET请求把参数包含在URL中&#xff0c;POST将参数包含在请求体request body中。 区别二&#xff0c;回退&#xff1a;GET在浏览器回退时是无害的&#xff0c;而POST会再次提交请求。 区别三&#…

经典文献阅读之--LOG-LIO(高效局部几何信息估计的激光雷达惯性里程计)

0. 简介 局部几何信息即法线和点分布在基于激光雷达的同时定位与地图构建&#xff08;SLAM&#xff09;中是至关重要&#xff0c;因为它为数据关联提供了约束&#xff0c;进一步确定了优化方向&#xff0c;最终影响姿态的准确性。然而即使在使用KD树或体素图的辅助下&#xff…

【CANN训练营笔记】AscendCL图片分类应用(C++实现)

样例介绍 基于PyTorch框架的ResNet50模型&#xff0c;对*.jpg图片分类&#xff0c;输出各图片所属分类的编号、名称。 环境介绍 华为云AI1s CPU&#xff1a;Intel Xeon Gold 6278C CPU 2.60GHz 内存&#xff1a;8G NPU&#xff1a;Ascend 310 环境准备 下载驱动 wget ht…

git diff

1. 如何将库文件的变化生成到patch中 git diff --binary commit1 commit2 > test.patch 打patch&#xff1a; git apply test.patch 2. 如何消除trailing whitespace 问题 git diff --ignore-space-at-eol commit1 commit2 > test.patch 打patch&#xff1a; git ap…

在 Windows 中安装部署并启动连接 MongoDB 7.x(命令行方式启动、配置文件方式启动、将启动命令安装为系统服务实现开机自启)

MongoDB 的下载 下载地址&#xff1a;https://www.mongodb.com/try/download/community 这里需要对 MongoDB 的版本号说明一下&#xff1a; MongoDB 版本号的命名规则是 x.y.z&#xff0c;当其中的 y 是奇数时表示当前的版本为开发版&#xff0c;当其中的 y 是偶数时表示当前的…

非关系型数据库之Redis配置与优化

一、关系数据库与非关系型数据库 1.1关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上一般面向于记录。SQL语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语言&#xff0c;用…