![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ds
文章平均质量分 56
敲击石头的一百零一次
dream
展开
-
【DFS】子集II
相比于子集1本题中多了重复元素,相比子集1本题最重要的是去重操作,将数组元素进行排序,如果当前元素与前一个元素相同,且前一个元素在上一层中没有被使用,那么当前元素就需要被剪掉。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-14 14:55:30 · 174 阅读 · 0 评论 -
【模拟】旋转图像
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。将矩阵左右对称交换,然后按照副对角线交换即可。. - 力扣(LeetCode)原创 2024-07-13 11:51:46 · 175 阅读 · 0 评论 -
【排序+哈希】字母异位词
遍历strs,维护一个哈希表其中key是升序排列的字符串,value是一个vector(Java是List)集合,将每一个字符串排序后加入,排序字符串key,下标集合做value存入map,最后遍历map即可。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-13 11:35:53 · 260 阅读 · 0 评论 -
【DFS】组合总数
枚举每个位置所有的可能,当前总和等于target时收集答案,如果直接每个位置都考虑n种选法,那么答案是包含重复的,所以我们只需要选择当前位置后面的元素进行组合。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-13 10:22:32 · 288 阅读 · 0 评论 -
【DFS】二叉搜索树中第k小的元素
BST的中序遍历是有序的,可以利用这一性质,对其进行中序遍历的同时维护一个全局的cnt记录遍历过的数量,当到达第k个位置时开始 回溯。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-12 11:31:15 · 290 阅读 · 0 评论 -
【DFS+记忆化搜索】矩阵中的最长递增路径
可以对上述DFS进行优化,比如第一次我们枚举【0,0】开头的所有的可能时就会得到这个位置连出去的最长递增序列的长度,如果我们在枚举其他位置为起点时,在dfs过程中走到了【0,0】位置,我们又要进行一次以【0,0】开头的递增序列长度的计算,此时可以将以这个位置为起点的最长递增序列的长度进行存储,这样当dfs到该位置的时候,如果该位置之前已经被遍历过得到结果则之间返回记录的结果。对于矩阵的搜索,枚举每一个位置可能的满足递增的序列,在dfs过程中维护一个最长递增序列长度的字段。. - 力扣(LeetCode)原创 2024-07-11 11:53:44 · 465 阅读 · 0 评论 -
【DFS】力扣热题100-岛屿的数量
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。dfs矩阵每一个位置,走过就标记为true, 如果矩阵中该位置的起点是0或者已经被遍历过就不在进行dfs。. - 力扣(LeetCode)原创 2024-07-10 22:29:32 · 309 阅读 · 0 评论 -
【DFS+Trie】力扣热题100-单词搜索
本题是单词搜索II的特殊情况,单词搜索II需要用到Trie树本题可以不使用Trie树但思想总体上相同,都是枚举所有可能的单词序列,看该序列是否是目标单词或者目标单词的前缀,如果是目标单词则之间返回,如果是前缀则继续dfs。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-10 16:49:40 · 386 阅读 · 0 评论 -
【单调队列】滑动窗口的最大值
每一次往窗口里加新元素时,如果窗口里从后往前的元素都比他小,那么这些元素一定不会是接下来窗口里的最大值,因为此时的新元素就是最大值,于是我们可以将这些比新元素小的元素弹出,然后将该元素插入,每一次队列头部的元素一定是最大的,找滑动窗口的最小值同理。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-10 15:59:56 · 280 阅读 · 0 评论 -
【二分】数组中的 k-diff 数对
题目与两数之和类似,本题寻找的是相减绝对值等于k的元素,首先我们可以对数组进行排序,排序后对于每一个元素去寻找满足条件的k-diff对,在寻找时可以通过二分或者双指针寻找。原创 2024-07-10 11:56:29 · 123 阅读 · 0 评论 -
【模拟】力扣13 罗马转阿拉伯数字
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-10 11:09:34 · 162 阅读 · 0 评论 -
【DFS】电话号码的字母组合
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。枚举每一个位置可能的值即可,如23,第一个位置2可能是abc,第二个位置3可能是def,按照位枚举即可。. - 力扣(LeetCode)原创 2024-07-10 10:42:37 · 212 阅读 · 0 评论 -
【DFS】括号生成(DFS + 栈)
上述dfs过程中,我们发现有在dfs过程中有一些分支是没有必要继续去dfs的,比如 在第一个位置选择时,我们选择右括号,右括号开头他注定不是一个合法的括号序列,所以这个分支我们没必要继续枚举后面不是答案的情况,再比如 ())这种也是无效的括号序列,不难发现在dfs过程中无效的括号序列在除去前面有效部分之后,是以)开头的 ())取出有效括号()后剩余) 剪枝前后dfs次数对比。文章浏览阅读209次。通过栈来解决,遍历串,如果是左括号就入栈,如果是右括号就与栈顶括号对比。. - 力扣(LeetCode)原创 2024-07-10 10:20:42 · 789 阅读 · 0 评论 -
【DFS+Trie】力扣hard-单词搜索II
这道题在Acwing题目的基础上添加了'.'这个“通配符”,也是是说在查找的过程中,如果遇到'.'他可以替换为任何字母,就好比打牌炸金花里面的王,可以替换任意牌。. - 备战技术面试?这个题目是让我们在一个字符矩阵中检索是否存在目标单词,存在就将目标单词枚举返回,对于单词的匹配可以使用前缀树来存储,然后我们枚举矩阵的所有可能的单词,判断这个单词是否是题目中所给的通过Trie树的search查询即可,枚举时需要通过dfs枚举每一个位置开头的单词,如果在dfs过程中发生他不是单词s的前缀,则进行剪枝。原创 2024-07-10 00:26:09 · 357 阅读 · 0 评论 -
【位图】判定字符是否唯一(不使用数据结构)
鸽巢原理+位图思想,一共有26个英文字母,用一个int类型的数据存储信息完全可以,这个int的第i位元素为1就代表则第i个字母已经存在,如果不存在就让这一位变为1,如果字符串长度大于26那么必然有重复的,这就是鸽巢原理。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-10 00:24:06 · 217 阅读 · 0 评论 -
【DFS+Trie】力扣hard-单词搜索II(前缀树+DFS)
这道题在Acwing题目的基础上添加了'.'这个“通配符”,也是是说在查找的过程中,如果遇到'.'他可以替换为任何字母,就好比打牌炸金花里面的王,可以替换任意牌。. - 备战技术面试?这个题目是让我们在一个字符矩阵中检索是否存在目标单词,存在就将目标单词枚举返回,对于单词的匹配可以使用前缀树来存储,然后我们枚举矩阵的所有可能的单词,判断这个单词是否是题目中所给的通过Trie树的search查询即可,枚举时需要通过dfs枚举每一个位置开头的单词,如果在dfs过程中发生他不是单词s的前缀,则进行剪枝。原创 2024-07-10 00:06:01 · 634 阅读 · 0 评论 -
【Trie】前缀树的三种操作(力扣面试经典150)
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-10 00:04:28 · 238 阅读 · 0 评论 -
【Trie】添加与搜索单词 - 数据结构设计(力扣211题)
这道题在Acwing题目的基础上添加了'.'这个“通配符”,也是是说在查找的过程中,如果遇到'.'他可以替换为任何字母,就好比打牌炸金花里面的王,可以替换任意牌。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-09 17:05:23 · 418 阅读 · 0 评论 -
【二分】有序矩阵中第k小的元素
这个矩阵是一个行和列都递增的矩阵,但每行的最后一个元素是不一定大于下一行第一个元素的,题目要求时间复杂度低于O(n²),如果不对时间复杂度进行限制,本题可以通过优先级队列解决TopK问题、排序、快速选择等方法解决,题目描述的矩阵中[0][0]下标元素一定是最小值,[n-1][n-1]元素一定是最大值,我们可以通过二分从这最小值与最大值之间寻找,当枚举第一个mid的时候,我们可以遍历整个矩阵每一行通过二分查找小于等于mid 的个数,统计出矩阵中小于等于mid的个数。. - 力扣(LeetCode)原创 2024-07-09 15:45:05 · 378 阅读 · 0 评论 -
【并查集】并查集自身存储集合元素个数+路径压缩
并查集在初始化时每个单独集合都初始为-1,也就是数组每一个下标都初始为-1,当进行合并时将其中一个根节点的元素个数加到一个根上面,比如初始时下标1集合和下标2集合都是-1,在进行合并时先查找根,他们都是原创 2024-07-09 11:21:53 · 356 阅读 · 0 评论 -
【Trie】串树
申请一个”节点“然后让a这个节点的b孩子p[a]['b' - 'a']指向刚才申请的”节点“。通用查询也是一样比如查询abc这个串,首先我们看根节点是否有a这个孩子,有就去a这个孩子节点,没有之间返回0,到a这个根节点的孩子节点后,查看当前a节点是否有b孩子,重复上述操作。系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。这是一道串树的模板题,首先什么是串树。比如我们要存储查询如下字符串。活动 - AcWing。原创 2024-07-09 10:15:44 · 268 阅读 · 0 评论 -
【DFS】全排列II
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-09 09:07:18 · 331 阅读 · 0 评论 -
【DFS】字母大小写全排列
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。枚举每一个位置,如果当前位置是字母就大小写转换后枚举两次。. - 力扣(LeetCode)原创 2024-07-08 01:33:01 · 388 阅读 · 0 评论 -
【二分】搜索插入位置(二分+暴力)
上述代码的时间复杂度是O(N)这道题可以通过二分降低时间复杂度,上述代码中数组其实被分为2个区间,左边是小于target的区间,右边是大于等于target的区间,满足二段性,当mid对于的值大于等于target时说明mid在答案所在的区间,此时r=mid, mid对于的值小于target说明mid落在了非答案区域,此时l = mid + 1,直到l遇到r,此时有一个特殊的情况需要处理:让l与r同时指向了数组的最后一个元素,且这个元素小于目标值,这个时候就需要返回数组最后一个位置+1。. - 备战技术面试?原创 2024-07-08 00:35:43 · 398 阅读 · 0 评论 -
【DFS】子集(两种递归策略)
枚举每一个位置可能的情况,比如1 2 3这个序列,我们每次都去枚举当前位置可能的元素,比如刚开始是空,将空加入结果集合,然后第一个位置可以枚举1,当第一个位置枚举1之后,第二个位置如何选择呢,第二个位置一定是从1这个元素之后去选择,可以选择2、3变为1 2 或者 13,继续当第二位置选择2时,我们需要从2后面继续选择第三个位置作为1 2 这个序列的第三个元素,2之后只能选择3,如果第二个位置选时,我们需要从3后面选择13序列的第三个元素,3后面没有就不能选择。. - 力扣(LeetCode)原创 2024-07-07 17:24:32 · 497 阅读 · 1 评论 -
【DFS】全排列
这样可以通过dfs去枚举所有存在的可能,枚举每一个位置的可能的值,从第一个位置枚举到最后一个位置,在进行dfs的过程中,当枚举完最后一个位置可能的值的时候,我们就需要将这个值进行输出,并且在枚举当前位置可能的值的时候需要注意恢复现场。要找到所有的全排列,上述第一测试用例有3个元素,那么第一个位置可以放三种,第二个位置也可以放三种,同理每一个位置都可能会存在3中情况。原创 2024-07-07 15:14:47 · 415 阅读 · 0 评论 -
【单调栈】单调栈
系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。活动 - AcWing。原创 2024-07-05 16:20:47 · 169 阅读 · 0 评论 -
【STL】C++ STL常用方法
【代码】【STL】C++ STL常用方法。原创 2024-07-05 15:31:55 · 99 阅读 · 0 评论 -
【链表】重排链表
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。找到中间节点,从中间断开后将后部分逆转,然后合并两个链表。. - 力扣(LeetCode)原创 2024-07-01 16:23:05 · 264 阅读 · 0 评论 -
【链表】链表排序(归并排序)
利用归并的思想对链表进行排序,首先找到链表的中间节点通过getMid快慢指针,然后进行归并,在归并完成进行两个链表的合并操作。原创 2024-07-01 15:53:32 · 194 阅读 · 0 评论 -
【链表】两个链表的第一个公共节点
计算二者的长度差值,让长的先走插值步,然后同时开始直到相遇。66. 两个链表的第一个公共结点 - AcWing题库。原创 2024-07-01 15:10:46 · 318 阅读 · 0 评论 -
【哈希】模拟哈希(链式寻找法)
【代码】【哈希】模拟哈希(链式寻找法)原创 2024-07-01 14:46:01 · 107 阅读 · 0 评论 -
【双指针】最长无重复字串长度(滑动窗口)
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字。题目来自【牛客题霸】最长无重复子数组_牛客题霸_牛客网。. - 力扣(LeetCode)双指针+哈希 滑动窗口。原创 2024-07-01 11:48:39 · 235 阅读 · 0 评论 -
【堆排序】堆排序
系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。活动 - AcWing。原创 2024-07-01 11:15:42 · 244 阅读 · 0 评论 -
【TopK】O(n)复杂度Topk问题的三种解决方法(优先级队列、排序、快速选择)
优先级队列在解决topk问题时,如果要求最小的前k个或者最小的第k个,我们需要建立一个大根堆,首先将前k个元素入堆,然后从第k个开始进行判断,如果当前元素比堆顶的元素小就让他入堆,这样保证堆中每次都存这最小的k个里面最大的那一个,也就是前第k大的。如果是求最大的k个或者第k大的就需要创建一个小根堆,如果当前元素比堆顶元素大就弹出堆顶并让该元素入堆。具体步骤包括先用数据集合中的前K个元素建堆,然后将剩余的元素与堆顶元素比较,必要时进行替换,并维护堆的性质。利用快排的思想排序后获取第k小或者第k大的元素。原创 2024-07-01 10:58:21 · 382 阅读 · 0 评论 -
【快速幂】Pow(x, n)
- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)原创 2024-07-01 00:54:56 · 200 阅读 · 0 评论 -
【并查集】合并集合(路径压缩)
递归的方式实现 路径压缩。非递归方式实现路径压缩。原创 2024-07-01 00:31:20 · 359 阅读 · 0 评论 -
【栈】中缀表达式求值(中缀转后缀+逆波兰表达式求值)
首先将中缀表达式通过栈转为后缀表达式,然后将后缀表达式进行求值,中缀转后缀:1. 如果遇到数字之间加入后缀表达式结果,2. 如果遇到( 则之间加入栈中 如果遇到 )就从符号栈中一直取出符号直到取到( 为止并将它们加入最终得后缀表达式中,3. 如果遇到的是+-/* 那么判断他的优先级,如果当前符号的优先级比栈顶符号优先级高则之间入栈,否则就一直从栈里弹出符号不断加入后缀结果中。原创 2024-06-30 23:52:46 · 326 阅读 · 0 评论 -
【栈】逆波兰表达式求值
通过栈模拟:遍历tokens如果遇到数字就将数字入栈,如果碰到符号就从栈里弹出两个数字进行对应计算后将结果入栈,第一个弹出的数字为右操作数。原创 2024-06-30 20:21:28 · 352 阅读 · 0 评论 -
【栈】模拟栈
系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。活动 - AcWing。原创 2024-06-30 19:43:19 · 216 阅读 · 0 评论