E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
LeetCode_回溯算法
代码训练营 day34|LeetCode 134,LeetCode 135,LeetCode 860,LeetCode 406
前言这里记录一下陈菜菜的刷题记录,主要应对25秋招、春招个人背景211CS本+CUHK计算机相关硕,一年车企软件开发经验代码能力:有待提高常用语言:C++系列文章目录第34天:第七章
回溯算法
part03
西几
·
2025-03-26 11:03
代码训练营刷题记录
leetcode
算法
c++
代码随想录Day22
Day22
回溯算法
part04LeetCode491.递增子序列题目描述给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。
好像也没那么热爱
·
2025-03-26 09:48
算法训练营
leetcode
java
代码随想录算法训练营第二十三天 |
回溯算法
part02| 39. 组合总和、40.组合总和II、131.分割回文串
39.组合总和这道题和前面组合问题的区别是,取的元素可以重复,也就是遍历的时候,同一个元素可以一直取。所以for循环里,逐个添加元素,判断和大于目标时break(否则会一直加)还是新建二维数组放结果,一维数组放path。输入参数为放结果数组、path、提供的数组、目标值、目前总和sum、startIndex提前把提供的数组排序,用Arrays.sort()这样sum超过target就break递归
boguboji
·
2025-03-24 17:41
刷题
算法
数据结构
leetcode_
位运算 67.二进制求和
67.二进制求和给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。1.内置函数classSolution(object):defaddBinary(self,a,b):""":typea:str:typeb:str:rtype:str"""res=int(a,2)+int(b,2)returnbin(res)[2:]时间复杂度分析:int(a,2)和int(b,2):这两步将二进制字符
MiyamiKK57
·
2025-03-24 15:31
leetcode
算法
python
leetcode_
双指针 557. 反转字符串中的单词 III
557.反转字符串中的单词III给定一个字符串s,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。思路:1.首先用split()切割字符串中用空格分隔的单词2.用切片法反转每个单词3.用join()把反转后的单词用空格连接classSolution(object):defreverseWords(self,s):""":types:str:rtype:str"""#使用spl
MiyamiKK57
·
2025-03-24 15:30
leetcode
算法
职场和发展
算法及数据结构系列 - 滑动窗口
系列文章目录算法及数据结构系列-二分查找算法及数据结构系列-BFS算法算法及数据结构系列-动态规划算法及数据结构系列-双指针算法及数据结构系列-
回溯算法
算法及数据结构系列-树文章目录滑动窗口框架思路经典题型
诺亚凹凸曼
·
2025-03-23 15:33
算法及数据结构
算法
数据结构
java
C语言的
回溯算法
C语言中的
回溯算法
引言
回溯算法
(Backtracking)是一种通过搜索所有可能的候选解,找到符合条件的解的算法。它常用于解决一些组合问题、约束满足问题和优化问题。
苏墨瀚
·
2025-03-21 00:40
包罗万象
golang
开发语言
后端
【leetcode hot 100 46】全排列
如果候选解被确认不是一个解(或者至少不是最后一个解),
回溯算法
会通过在上一步进行一些变化抛弃该解,即回溯并且再次尝试。
longii11
·
2025-03-20 22:17
leetcode
算法
数据结构
【算法手记04】
回溯算法
回溯是递归的副产品,只要有递归,就会有对应的回溯过程。回溯实际上就是“撤销上一次递归操作”的一个过程。回溯法是由递归+循环组成的,其中每次循环执行的次数应该是可知的。每一次完成递归都会收集一次可能的结果,因此结果集的大小是不确定的,需要使用递归去找,我们称之为纵向搜索;而每次循环会从待找集合中依次遍历,是一个横向搜索的过程。模板voidbacktracking(参数){if(终止条件){收集结果r
Xeno Li
·
2025-03-17 03:05
算法
java
回溯算法
知识总结
1.什么是回溯怎么用(回溯本质及模版)底层逻辑:解决树形结构问题、用到递归逻辑、穷举本质优化靠剪枝。回溯模版:1.建立回溯函数(一般以void返回)难点:如何选取参数(index,sum,used,...)voidbacktracking(参数)2.回溯终止条件难点:如何对应终止条件if(终止条件){存放结果;return;}3.单层遍历规则(广搜(横向遍历)靠for循环,深搜(纵向遍历)靠递归)
专业刷题Pia
·
2025-03-16 14:58
算法
贪心算法和
回溯算法
有什么区别?
贪心算法和
回溯算法
有什么区别?在算法的世界里,贪心算法和
回溯算法
是两种常见的解决问题的策略。它们在很多场景下都能发挥重要作用,但又有着明显的区别。
少林码僧
·
2025-03-15 08:13
数据结构与算法实战
算法
贪心算法
DAY31
回溯算法
排列问题
491.非递减子序列-力扣(LeetCode)这道题限制了nums的取值范围,所以可以使用数组来去重,如果范围过大要使用哈希表。classSolution{private:vector>result;vectorpath;voidbackTracking(vector&nums,intstartIndex){if(path.size()>1){result.push_back(path);}int
Useee
·
2025-03-15 07:32
leetcode
数据结构
算法
c++
DAY30
回溯算法
子集问题 Ⅰ
93.复原IP地址-力扣(LeetCode)classSolution{private:vectorresult;voidbackTracking(string&s,intstartIndex,intpiontNum){if(piontNum==3){if(isUseful(s,startIndex,s.size()-1)){result.push_back(s);}return;}for(int
Useee
·
2025-03-15 07:32
算法
leetcode
c++
数据结构
回溯算法
入门(排列树问题 + 子集树问题)
#include#include//排列数问题/*如[1,2,3]的所有全排列结果为[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]总的排列数量为3!个*///法一:交换位置法voidswap(int*a,int*b){inttemp=*a;*a=*b;*b=temp;}voidprintArr(int*arr,intn){inti;for(i=0;i
啊龙阿
·
2025-03-14 21:04
算法
LeetCode_
随机数索引
LeetCode_
随机数索引【中等】正题:题目:给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。您可以假设给定的数字一定存在于数组中。注意:数组大小可能非常大。
云墨书生
·
2025-03-13 14:14
LeetCode题解
leetcode
算法
java
华为OD机试-构成指定长度字符串的个数(Java 2024 E卷 100分)
解题思路我们可以使用
回溯算法
来解决这个问题。通过递
蓝白咖啡
·
2025-03-08 19:55
华为OD机试
华为OD
机试
算法
Jave
Python
C++
JavaScript
代码随想录第二十五天|
回溯算法
part05--332.重新安排行程、51.N皇后、37.解数独
刷题小记:三道困难题,理解成本不低,推荐结合题解视频进行理解。回溯问题的本质是暴力搜索,在面对过于复杂的问题时,要把握事物的主要矛盾,即应当先实现基本思路,再考虑剪枝(次要矛盾),否则可能不但没成功剪枝,反倒“枝横叶乱”。332.重新安排行程(332.重新安排行程)题目分析:给定一个航线列表List>tickets,其中tickets[i]=[fromi,toi]表示飞机出发和降落的机场地点。请对
Aqua Cheng.
·
2025-03-07 14:23
代码随想录算法训练营一刷
算法
java
数据结构
leetcode
“八皇后问题”解题思路与 C 语言代码实现
简介“八皇后问题”是一个经典的算法问题,也是
回溯算法
的典型应用案例。它的目标是在一个8×8的国际象棋棋盘上放置八个皇后,使得任意两个皇后都不能互相攻击,即不能处于同一行、同一列或同一斜线上。
CoreFMEA软件
·
2025-03-06 20:27
技术算法
c语言
算法
八皇后问题
解题思路
回溯算法
之子集问题
文章目录1.前言2.子集问题3.子集中去重1.前言本文讲解
回溯算法
中的另一类问题,也就是子集问题。子集问题和组合问题类似,只是收集结果的时机不同。
比奇堡的天没有云
·
2025-03-04 07:08
刷题笔记
算法
day23 第七章
回溯算法
part02
组合问题:同一个集合,startindex允许重复元素startindex从i开始不允许重复元素,startindex从i+1开始不同集合,index(可以用for,不用用回溯)for循环,横向遍历,控制组合不重复;递归,for内部,纵向便利,控制组合内元素如何构成。剪枝从元素个数和元素和入手,元素和用排序+剪枝,都是在for的结束上做文章39.组合总和如果是一个集合来求组合的话,就需要start
mvufi
·
2025-03-01 08:31
算法
关于
回溯算法
中的剪枝是否需要for循环的总结归纳
在
回溯算法
中,剪枝的目的是减少不必要的递归调用,从而提高算法的效率。剪枝的方式可以有很多种,有些剪枝确实不需要在for循环中实现,而是通过其他方式(如条件判断)来实现。
Exhausted、
·
2025-02-28 01:38
算法
算法
深度优先
c++
数据结构
剪枝
力扣-回溯法技巧总结
形式一、元素无重不可复选,即nums中的元素都是唯一的,每个元素最多只能被使用一次,backtrack核心代码如下:/*组合/子集问题
回溯算法
框架*/voidbacktrack(int[]nums,intstart
LoaryBetter
·
2025-02-26 16:15
算法
力扣
【leetcode刷题版】
回溯算法
电话号码的字母组合四、组合总和五、组合总和Ⅱ六、分割回文串七、复原IP地址八、子集九、子集(需要去重)十、非递减子序列十一、全排列十一、全排列Ⅱ十二、重新安排行程(难)十三、N皇后十四、解数独背景知识
回溯算法
是一种通过试错来解决问题的算法
学废了wuwu
·
2025-02-26 04:47
算法
leetcode
python
力扣hot100——分割回文子串 +
回溯算法
总结(算法代码模板)
给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。解法思路:切割一个a之后,在ab中再去切割第二段.....classSolution{public:vector>res;//最终结果vectorpath;//当前结果vector>partition(strings){backtracking(s,0);returnres;}voidbacktracking
01_
·
2025-02-25 23:13
力扣hot100
算法
leetcode
回溯算法
回溯算法
leetcode.22
publicListgenerateParenthesis(intn){Setset=newHashSetset,intm,intn,StringBuffers){if(m>=n)//m为s的层数,n为总层数,因为s初始为一层,所以m初始为1set.add(s.toString());else{//每找到一个‘(’,则插入“()”,进入下一层,之后删除插入的括号,继续寻找'('或者达到s末尾for
路Louis
·
2025-02-25 05:40
算法总结
算法
java
leetcode
剪枝
数据结构
21.
回溯算法
3
复原ip地址classSolution{public:stringip;vectorres;intlevel=0;voidbacktracking(strings,intstart){if((level==4)&&(start==s.size())){res.push_back(ip.erase(ip.size()-1,1));return;}elseif((levels.size())){ret
居然有人654
·
2025-02-25 05:08
算法
数据结构
c++
回溯算法
总结
回溯法17.电话号码的字母组合22.括号生成39.组合总和40.组合总和II46.全排列47.全排列II77.组合78.子集90.子集II93.复原IP地址79.单词搜索131.分割回文串401.二进制手表当遇到组合问题的时候,要想到回溯法。17.电话号码的字母组合classSolution{Listres=newArrayListmap=newHashMapletterCombinations(
Javan Lu
·
2025-02-25 05:06
算法题
算法
数据结构
java
22.
回溯算法
4
递增子序列这里不能排序,因为数组的顺序是对结果有影响的,所以只能通过used数组来去重classSolution{public:vectorpath;vector>res;voidbacktracking(vector&nums,intstart){if(path.size()>1)res.push_back(path);intused[201]={0};for(inti=start;i=path
居然有人654
·
2025-02-25 05:05
算法
数据结构
leetcode
代码随想录训练营第二十三天| 39. 组合总和 40.组合总和II 131.分割回文串
39.组合总和题目链接/文章讲解:代码随想录视频讲解:带你学透
回溯算法
-组合总和(对应「leetcode」力扣题目:39.组合总和)|回溯法精讲!
chengooooooo
·
2025-02-23 12:17
算法
Day24 第七章
回溯算法
part03
一.学习文章及资料39.组合总和40.组合总和II131.分割回文串二.学习内容1.组合总和题目特点:1.无重复元素的整数数组candidates2.同一个元素可以重复被选取因为本题没有组合数量要求,仅仅是总和的限制,所以递归没有层数的限制,只要选取的元素总和超过target,就返回!而在77.组合(opensnewwindow)和216.组合总和III(opensnewwindow)中都可以知道
TAK_AGI
·
2025-02-22 23:42
算法
回溯算法
15. N皇后(难)
回溯算法
15.N皇后(难)51.N皇后-力扣(LeetCode)代码随想录难度6-困难题目理解:n皇后问题,其实可以看成:按行顺序依次摆放皇后,每一行只能放一个皇后,那么只要保证每一行新放置的皇后与之前放置的皇后之间
Mophead_Zarathustra
·
2025-02-22 21:19
Mophead的小白刷题笔记
leetcode
python
代码随想录
回溯算法
leetcode_
二叉树 543.二叉树的直径
543.二叉树的直径给你一棵二叉树的根节点,返回该树的直径。二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root。两节点之间路径的长度由它们之间边数表示。1.DFS(递归)思路:递归:使用递归来遍历树。对于每个节点,计算其左子树和右子树的深度,然后更新直径深度计算:在递归过程中,计算每个节点的左子树和右子树的深度。深度是指从当前节点到叶子节点的最长路径的边
MiyamiKK57
·
2025-02-19 03:02
leetcode
深度优先
算法
求职刷题力扣 DAY28---
回溯算法
DAY281.491.非递减子序列给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例1:输入:nums=[4,6,7,7]输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]示
云墨丹青
·
2025-02-18 10:21
算法
leetcode
职场和发展
代码随想录-算法训练营day30(
回溯算法
06:重新安排行程,N皇后,数独,
回溯算法
总结)
第七章
回溯算法
part06●332.重新安排行程●51.N皇后●37.解数独●总结详细布置今天这三道题都非常难,那么这么难的题,为啥一天做三道?
java菜鸡加油
·
2025-02-15 20:06
算法
蓝桥杯之分支限界算法
算法思想分支限界算法类似于
回溯算法
,是在问题的解空间树上搜索问题的解的算法,主要体现在两点不同:1,求解的目标不同。
LittleLionlion
·
2025-02-14 15:47
蓝桥杯
算法
职场和发展
代码随想录 Day 30 | 【第七章
回溯算法
part 03】93.复原IP地址、78.子集、90.子集II
一、93.复原IP地址本期本来是很有难度的,不过大家做完分割回文串之后,本题就容易很多了题目链接/文章讲解:代码随想录视频讲解:
回溯算法
如何分割字符串并判断是合法IP?
Accept17
·
2025-02-14 02:54
算法
leetcode_
二叉树 111. 二叉树的最小深度
111.二叉树的最小深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。1.深度遍历DFS(递归)#Definitionforabinarytreenode.#classTreeNode(object):#def__init__(self,val=0,left=None,right=None):#self.val=val#
MiyamiKK57
·
2025-02-14 02:53
leetcode
算法
深度优先
leetcode_
深度搜索和广度搜索 104. 二叉树的最大深度
104.二叉树的最大深度二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。#Definitionforabinarytreenode.#classTreeNode(object):#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolutio
MiyamiKK57
·
2025-02-13 16:18
leetcode
算法
职场和发展
leetcode_
深度搜索和广度搜索 112. 路径总和
112.路径总和给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回false。叶子节点是指没有子节点的节点。1.深度优先搜索(DFS)首先判断根节点是否为空。如果为空,则返回False然后检查当前节点是否是叶子节点(即同时没有左右子树)。如果是叶子节点
MiyamiKK57
·
2025-02-13 16:18
leetcode
算法
职场和发展
leetcode_
双指针 125.验证回文串
125.验证回文串如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个回文串。字母和数字都属于字母数字字符。给你一个字符串s,如果它是回文串,返回true;否则,返回false。法1:re.subre.sub()是Pythonre(正则表达式)模块中的一个函数,用于替换字符串中匹配指定正则表达式的部分基本语法:re.sub(patter
MiyamiKK57
·
2025-02-13 16:17
leetcode
算法
职场和发展
代码随想录 Day 29 | 【第七章
回溯算法
part02】39. 组合总和、40.组合总和II、131.分割回文串
一、39.组合总和本题是集合里元素可以用无数次,那么和组合问题的差别其实仅在于startIndex上的控制题目链接/文章讲解:代码随想录视频讲解:带你学透
回溯算法
-组合总和(对应「leetcode」力扣题目
Accept17
·
2025-02-12 06:06
算法
9.3剪枝优化策略
一、剪枝算法核心概念剪枝(Pruning)是一种优化策略,用于在搜索过程中提前终止无效分支的探索,主要应用于:
回溯算法
深度优先搜索(DFS)动态规划博弈树搜索二、常见剪枝策略1.可行性剪枝(FeasibilityPruning
赵鑫亿
·
2025-02-11 21:26
c++数据结构与算法
剪枝
算法
机器学习
c++
leetcode_
深度搜索和广度搜索 100. 相同的树
100.相同的树给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两棵树在结构上相同,并且节点具有相同的值,则认为它们是相同的。思路:(递归法)返回True的情况:两棵树都为空两棵树相同返回False的情况:两棵树不为空但节点分布不同或节点值不同不相同两棵树有一个为空注:先判断是否为空,再判断节点值是否相同-#Definitionforabinarytreenode.#clas
MiyamiKK57
·
2025-02-10 17:33
leetcode
算法
职场和发展
leetcode_
字符串 459. 重复的子字符串
459.重复的子字符串给定一个非空的字符串s,检查是否可以通过由他的一个子串重复多次构成思路:首先判断字符串s是否为空或长度是否为1,若满足这两种条件,则说明不存在子字符串,返回False遍历所有可能的子串(从长度为1的子串开始遍历)如果存在子串a使得len(s)能够整除len(a),则说明该子串a有可能重复多次后能够成为s将子串a重复多次直至和字符串s等长,判断是否相等,相等返回True,否则返
MiyamiKK57
·
2025-02-10 17:03
leetcode
算法
职场和发展
组合(力扣77)
从这道题开始,我们正式进入
回溯算法
的学习。之前在二叉树中只是接触到了一丢丢,而这里我们将使用
回溯算法
解决很多经典问题。那么这道题是如何使用
回溯算法
的呢?在讲回溯之前,先说明一下此题是如何递归的。
qy发大财
·
2025-02-10 07:59
leetcode
算法
职场和发展
数据结构
Day25 非递减子序列 全排列 全排列 II
回溯算法
part04491.非递减子序列-力扣(LeetCode)超时是因为res.contains(path)耗时先搜索所有结果之后判断结果是否有序LinkedListpath=newLinkedList
落叶过河
·
2025-02-10 06:21
代码随想录算法打卡
数据结构
算法
力扣77题组合
77.组合难度:中等标签:
回溯算法
给定两个整数n和k,返回1…n中所有可能的k个数的组合。
zzxdddd
·
2025-02-08 10:25
力扣
组合问题--力扣第77题
示例:输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]思路:使用
回溯算法
,LinkedListpath:来存储路径Listres:存储结果backtrack
天忍哥哥
·
2025-02-08 09:45
回溯算法
leetcode
java
算法
回溯算法
简单理解
leecode每日一题
回溯算法
是一种通过试错来解决问题的算法,当发现当前路径无法得到正确解时,会回溯到上一步尝试其他可能。它特别适合解决组合问题、排列问题、子集问题、棋盘类问题等。
tanactor
·
2025-02-07 16:59
刷题
c++
算法
c++
回溯算法
详解与剪枝优化
1.什么是
回溯算法
?
回溯算法
(Backtracking)是一种通过探索所有可能情况来找到所有解的算法。它在一定程度上可以理解为带有返回操作的深度优先搜索(DFS)。
single_ffish
·
2025-02-07 16:58
算法
剪枝
python
leetcode
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他