代码随想录算法训练营第二十二天|491.递增子序列、46.全排列、47.全排列 II

491.递增子序列

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!Github:https://github.com/youngyangyang04/leetcode-master, 视频播放量 39561、弹幕量 841、点赞数 1414、投硬币枚数 1587、收藏人数 195、转发人数 46, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:带你学透回溯算法(理论篇)| 回溯法精讲!,回溯算法中的去重,树层去重树枝去重,你弄清楚了没?| LeetCode:40.组合总和II,这就是传说中的N皇后? 回溯算法安排!| LeetCode:51.N皇后,手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找,回溯算法求解全排列,如何去重?| LeetCode:47.全排列 II,回溯算法二维递归?解数独不过如此!| LeetCode:37. 解数独,带你学透回溯算法-组合问题(对应力扣题目:77.组合)| 回溯法精讲!,带你学透回溯算法-分割回文串(对应力扣题目:131.分割回文串)| 回溯法精讲!,动态规划之子序列问题,元素不连续!| LeetCode:300.最长递增子序列,组合与排列的区别,回溯算法求解的时候,有何不同?| LeetCode:46.全排列icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1EG4y1h78v/

思考:不能排序,重点在去重,在每层用个map来标记被该元素是否被使用过。使用过就跳过来达到去重的目的。 

class Solution {public static List<List<Integer>> result = new ArrayList<>();public static List<Integer> path = new ArrayList<>();public static List<List<Integer>> findSubsequences(int[] nums) {HashSet<Integer> used = new HashSet<>();result.clear();backtracking(nums, 0);return result;}public static void backtracking(int[] nums, int startIndex) {if (path.size() >= 2) {result.add(new ArrayList<>(path));}if (startIndex >= nums.length) {return;}HashSet<Integer> used = new HashSet<>();for (int i = startIndex; i < nums.length; i++) {if (used.contains(nums[i])) {continue;}if (path.size() > 0 && nums[i] < path.get(path.size() - 1)) {continue;}used.add(nums[i]);path.add(nums[i]);backtracking(nums, i + 1);path.remove(path.size() - 1);}}
}

46.全排列

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:组合与排列的区别,回溯算法求解的时候,有何不同?| LeetCode:46.全排列_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.comGithub:https://github.com/youngyangyang04/leetcode-master, 视频播放量 56084、弹幕量 447、点赞数 1168、投硬币枚数 850、收藏人数 344、转发人数 84, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:当你过度准备了一场代码面试时……,震惊!汤家凤老师曾经是个程序员???自称编程水平一流!冒泡排序讲得头头是道!,【neko算法课】N皇后问题 回溯法【13期】,国内算法大佬左程云VS清华大佬马士兵:Leetcode刷题200道,足以吊打字节面试官!,回溯算法套路③排列型回溯+N皇后【基础算法精讲 16】,小学生也能学会的【排列组合】,5分钟理解回溯算法,如何理解排列组合?,46. 全排列 Permutations 【LeetCode 力扣官方题解】,全排列问题icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV19v4y1S79W/

思考:与组合不同之处在与每次递归startIndex从0开始。

class Solution {public static List<List<Integer>> result = new ArrayList<>();public static List<Integer> path = new ArrayList<>();public List<List<Integer>> permute(int[] nums) {result.clear();boolean[] used = new boolean[nums.length];backtracking(nums, used);return result;}public static void backtracking(int[] nums, boolean[] used) {if (path.size() == nums.length) {result.add(new ArrayList<>(path));return;}for (int i = 0; i < nums.length; i++) {if (used[i] == false) {path.add(nums[i]);used[i] = true;backtracking(nums, used);used[i] = false;path.remove(path.size()-1);} else {continue;}}}
}

47.全排列 II 

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:回溯算法求解全排列,如何去重?| LeetCode:47.全排列 II_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.comGithub:https://github.com/youngyangyang04/leetcode-master, 视频播放量 40361、弹幕量 494、点赞数 944、投硬币枚数 761、收藏人数 194、转发人数 35, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:震惊!汤家凤老师曾经是个程序员???自称编程水平一流!冒泡排序讲得头头是道!,当你过度准备了一场代码面试时……,我更完了,你看完了吗?,【neko算法课】N皇后问题 回溯法【13期】,贪心算法理论基础!,贪心算法,合并区间有细节!LeetCode:56.合并区间,回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列,关于二叉树,你该了解这些!| 二叉树理论基础一网打尽,二叉树的种类、二叉树的存储方式、二叉树节点定义、二叉树的遍历顺序,贪心算法,怎么跳跃不重要,关键在覆盖范围 | LeetCode:55.跳跃游戏,chapt5-2-回溯-全排列icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1R84y1i7Tm/

思考:去重用used数组来区分是树枝还是树层。

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

 

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

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

相关文章

二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;root [1,null,2] 输出…

要读文献 | Acta Pharmacol Sin | 上海药物所徐华强团队发表综述:基于生成扩散模型的 AI 驱动抗体设计

近日&#xff0c;来自中国科学院上海药物研究所的徐华强团队在 Acta Pharmacologica Sinica 发表综述文章“AI-driven antibody design with generative diffusion models: current insights and future directions”。文章主要讨论了基于生成扩散模型的抗体设计的最新进展&…

Collections 工具类

在 Java 编程中&#xff0c;集合&#xff08;Collections&#xff09;是处理数据的核心工具之一。为了简化集合操作并提高代码的可读性和可维护性&#xff0c;JDK 提供了一个强大的工具类&#xff1a;java.util.Collections。这个类包含了一系列静态方法&#xff0c;用于对集合…

机器学习引领流体动力学新纪元:CFD、Fluent与OpenFOAM的深度融合

在科技日新月异的今天&#xff0c;机器学习正以前所未有的力量重塑着众多学科领域&#xff0c;其中&#xff0c;流体动力学便是受益匪浅的典范。作为计算流体力学&#xff08;CFD&#xff09;领域的两大巨头&#xff0c;Fluent与OpenFOAM正携手机器学习技术&#xff0c;共同开启…

django入门【05】模型介绍(二)——字段选项

文章目录 1、null 和 blank示例说明⭐ null 和 blank 结合使用的几种情况总结&#xff1a; 2、choices**choices 在 Django 中有以下几种形式&#xff1a;**&#xff08;1&#xff09; **简单的列表或元组形式**&#xff08;2&#xff09; **字典映射形式**&#xff08;3&#…

PL/SQL执行.sql文件

1.编写.sql文件&#xff0c;创建update.sql文件&#xff0c;文件如下&#xff1a; set feedback offset define off--更新表中所有人的年龄update a set age18;prompt Done. 2.打开plsql选择命令窗口&#xff0c;即选择File->New->Command Window&#xff1b; 打开后的…

论文5—《基于改进YOLOv5s的轻量化金银花识别方法》文献阅读分析报告

论文报告&#xff1a;基于改进YOLOv5s的轻量化金银花识别方法 论文报告文档 基于改进YOLOv5s的轻量化金银花识别方法 论文报告文档摘要国内外研究现状国内研究现状国外研究现状 研究目的研究问题使用的研究方法试验研究结果文献结论创新点和对现有研究的贡献1. 目标检测技术2. …

【数据结构】ArrayList与LinkedList详解!!!——Java

目录 一&#x1f31e;、List 1&#x1f345;.什么是List&#xff1f; 2&#x1f345;.List中的常用方法 二&#x1f31e;、ArrayList 1&#x1f34d;.什么是ArrayList? 2&#x1f34d;.ArrayList的实例化 3&#x1f34d;.ArrayList的使用 4&#x1f34d;.ArrayList的遍…

modbus协议 Mthings模拟器使用

进制转换 HEX 16进制 (0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F表示0-15) dec 10进制 n(16进制) -> 10 abcd.efg(n) d*n^0 c*n^1 b*n^2 a*n^3 e*n^-1 f*n^-2 g*n^-3&#xff08;10&#xff09; 10 -> n(16进制) Modbus基础概念 高位为NUM_H&…

微信版产品目录如何制作?

微信作为我国最流行的社交媒体平台&#xff0c;拥有庞大的用户群体。许多企业都希望通过微信来推广自己的产品&#xff0c;提高品牌知名度。制作一份精美、实用的微信版产品目录&#xff0c;是企业微信营销的重要手段。微信版产品目录的制作方法&#xff0c;帮助您轻松入门。 ​…

消息推送之SSE

一、简介 市面上很多系统都有 以上三种的消息提醒。但大多分为2类&#xff0c;一类移动端&#xff0c;一类web端比&#xff0c;通常在服务端会有若干张消息推送表&#xff0c;用来记录用户触发不同事件所推送不同类型的消息&#xff0c;前端主动查询&#xff08;拉&#x…

react中如何在一张图片上加一个灰色蒙层,并添加事件?

最终效果&#xff1a; 实现原理&#xff1a; 移动到图片上的时候&#xff0c;给img加一个伪类 &#xff01;&#xff01;此时就要地方要注意了&#xff0c;因为img标签是闭合的标签&#xff0c;无法直接添加 伪类&#xff08;::after&#xff09;&#xff0c;所以 我是在img外…

微搭低代码入门03函数

目录 1 函数的定义与调用2 参数与返回值3 默认参数4 将功能拆分成小函数5 函数表达式6 箭头函数7 低代码中的函数总结 在用低代码开发软件的时候&#xff0c;除了我们上两节介绍的变量、条件语句外&#xff0c;还有一个重要的概念叫函数。函数是执行特定功能的代码片段&#xf…

Zabbix中文监控指标数据乱码

1&#xff09;点击主机&#xff0c;选择Zabbix server 中的 图形 一项&#xff0c;可以看到当前显示的为乱码 2&#xff09; 下载字体文件&#xff1a; https://gitcode.com/open-source-toolkit/4a3db/blob/main/SimHei.zip 解压unzip -x SimHei.zip 3&#xff09; 替换字体文…

限价订单簿中的高频交易

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

JDBC事务管理、四大特征(ACID)、事务提交与回滚、MySQL事务管理

目录 一、什么是JDBC事务&#xff1f; &#xff08;1&#xff09;事务概念。 &#xff08;2&#xff09;JDBC事务的实现。 1、提交。 2、回滚。 &#xff08;3&#xff09;生活中可以类比 JDBC 事务的例子。 1、以网上购物为例。 二、JDBC的四大事务&#xff08;ACID&#xff0…

操作系统离散存储练习题

1. (简答题)分页存储管理系统具有快表&#xff0c;内存访问时间为2ns&#xff0c;检索快表时间为0.5ns&#xff0c;快表命中率为80%&#xff0c;求有效访问时间 -分析&#xff1a;首先访问缓存&#xff08;快表&#xff09;&#xff0c;如果没有找到访问内存&#xff08;页表&…

【AI日报】2024年11月13号

我回来啦&#xff01;&#xff01;发现自己好久不发文章了。 在某头部AI公众号实习的过程中&#xff0c;学到太多太多了&#xff0c;也感谢某位大神的指点&#xff0c;也衷心祝愿他的IP可以越做越好 之后因为时间关系&#xff0c;可能要自己出来单干了。 在实习过程中学到的…

inline内联函数(C++)

a&#xff09;⽤inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调⽤的地⽅展开内联函数&#xff0c;这样调⽤内联函数就不需要建⽴栈帧了&#xff0c;就可以提⾼效率。 b&#xff09;inline对于编译器⽽⾔只是⼀个建议&#xff0c;也就是说&#xff0c;你加了inl…

C++builder中的人工智能(27):如何将 GPT-3 API 集成到 C++ 中

人工智能软件和硬件技术正在迅速发展。我们每天都能看到新的进步。其中一个巨大的飞跃是我们拥有更多基于自然语言处理&#xff08;NLP&#xff09;和深度学习&#xff08;DL&#xff09;机制的逻辑性更强的AI聊天应用。有许多AI工具可以用来开发由C、C、Delphi、Python等编程语…