自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 【DFS】子集II

相比于子集1本题中多了重复元素,相比子集1本题最重要的是去重操作,将数组元素进行排序,如果当前元素与前一个元素相同,且前一个元素在上一层中没有被使用,那么当前元素就需要被剪掉。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-14 14:55:30 173

原创 【模拟】旋转图像

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。将矩阵左右对称交换,然后按照副对角线交换即可。. - 力扣(LeetCode)

2024-07-13 11:51:46 175

原创 【排序+哈希】字母异位词

遍历strs,维护一个哈希表其中key是升序排列的字符串,value是一个vector(Java是List)集合,将每一个字符串排序后加入,排序字符串key,下标集合做value存入map,最后遍历map即可。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-13 11:35:53 260

原创 【DFS】组合总数II

与组合总数1相比本题要求元素不可重复使用,此时可以维护一个check【i】数组,如果当前值没有被选择则可以选择他进行枚举,如果出现重复元素,如果重复的元素已经在前几层dfs被选择过那么当前元素可以被选择作为当前位置的值,如果没有则不能选择。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。

2024-07-13 10:48:51 158

原创 【DFS】组合总数

枚举每个位置所有的可能,当前总和等于target时收集答案,如果直接每个位置都考虑n种选法,那么答案是包含重复的,所以我们只需要选择当前位置后面的元素进行组合。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-13 10:22:32 288

原创 【DFS】二叉搜索树中第k小的元素

BST的中序遍历是有序的,可以利用这一性质,对其进行中序遍历的同时维护一个全局的cnt记录遍历过的数量,当到达第k个位置时开始 回溯。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-12 11:31:15 290

原创 【DFS+记忆化搜索】矩阵中的最长递增路径

可以对上述DFS进行优化,比如第一次我们枚举【0,0】开头的所有的可能时就会得到这个位置连出去的最长递增序列的长度,如果我们在枚举其他位置为起点时,在dfs过程中走到了【0,0】位置,我们又要进行一次以【0,0】开头的递增序列长度的计算,此时可以将以这个位置为起点的最长递增序列的长度进行存储,这样当dfs到该位置的时候,如果该位置之前已经被遍历过得到结果则之间返回记录的结果。对于矩阵的搜索,枚举每一个位置可能的满足递增的序列,在dfs过程中维护一个最长递增序列长度的字段。. - 力扣(LeetCode)

2024-07-11 11:53:44 465

原创 【DFS】力扣热题100-岛屿的数量

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。dfs矩阵每一个位置,走过就标记为true, 如果矩阵中该位置的起点是0或者已经被遍历过就不在进行dfs。. - 力扣(LeetCode)

2024-07-10 22:29:32 309

原创 【DFS+Trie】力扣热题100-单词搜索

本题是单词搜索II的特殊情况,单词搜索II需要用到Trie树本题可以不使用Trie树但思想总体上相同,都是枚举所有可能的单词序列,看该序列是否是目标单词或者目标单词的前缀,如果是目标单词则之间返回,如果是前缀则继续dfs。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-10 16:49:40 386

原创 【单调队列】滑动窗口的最大值

每一次往窗口里加新元素时,如果窗口里从后往前的元素都比他小,那么这些元素一定不会是接下来窗口里的最大值,因为此时的新元素就是最大值,于是我们可以将这些比新元素小的元素弹出,然后将该元素插入,每一次队列头部的元素一定是最大的,找滑动窗口的最小值同理。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-10 15:59:56 280

原创 【二分】数组中的 k-diff 数对

题目与两数之和类似,本题寻找的是相减绝对值等于k的元素,首先我们可以对数组进行排序,排序后对于每一个元素去寻找满足条件的k-diff对,在寻找时可以通过二分或者双指针寻找。

2024-07-10 11:56:29 123

原创 【模拟】力扣13 罗马转阿拉伯数字

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-10 11:09:34 161

原创 【DFS】电话号码的字母组合

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。枚举每一个位置可能的值即可,如23,第一个位置2可能是abc,第二个位置3可能是def,按照位枚举即可。. - 力扣(LeetCode)

2024-07-10 10:42:37 212

原创 【DFS】括号生成(DFS + 栈)

上述dfs过程中,我们发现有在dfs过程中有一些分支是没有必要继续去dfs的,比如 在第一个位置选择时,我们选择右括号,右括号开头他注定不是一个合法的括号序列,所以这个分支我们没必要继续枚举后面不是答案的情况,再比如 ())这种也是无效的括号序列,不难发现在dfs过程中无效的括号序列在除去前面有效部分之后,是以)开头的 ())取出有效括号()后剩余) 剪枝前后dfs次数对比。文章浏览阅读209次。通过栈来解决,遍历串,如果是左括号就入栈,如果是右括号就与栈顶括号对比。. - 力扣(LeetCode)

2024-07-10 10:20:42 789

原创 【DFS+Trie】力扣hard-单词搜索II

这道题在Acwing题目的基础上添加了'.'这个“通配符”,也是是说在查找的过程中,如果遇到'.'他可以替换为任何字母,就好比打牌炸金花里面的王,可以替换任意牌。. - 备战技术面试?这个题目是让我们在一个字符矩阵中检索是否存在目标单词,存在就将目标单词枚举返回,对于单词的匹配可以使用前缀树来存储,然后我们枚举矩阵的所有可能的单词,判断这个单词是否是题目中所给的通过Trie树的search查询即可,枚举时需要通过dfs枚举每一个位置开头的单词,如果在dfs过程中发生他不是单词s的前缀,则进行剪枝。

2024-07-10 00:26:09 357

原创 【位图】判定字符是否唯一(不使用数据结构)

鸽巢原理+位图思想,一共有26个英文字母,用一个int类型的数据存储信息完全可以,这个int的第i位元素为1就代表则第i个字母已经存在,如果不存在就让这一位变为1,如果字符串长度大于26那么必然有重复的,这就是鸽巢原理。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-10 00:24:06 217

原创 【DFS+Trie】力扣hard-单词搜索II(前缀树+DFS)

这道题在Acwing题目的基础上添加了'.'这个“通配符”,也是是说在查找的过程中,如果遇到'.'他可以替换为任何字母,就好比打牌炸金花里面的王,可以替换任意牌。. - 备战技术面试?这个题目是让我们在一个字符矩阵中检索是否存在目标单词,存在就将目标单词枚举返回,对于单词的匹配可以使用前缀树来存储,然后我们枚举矩阵的所有可能的单词,判断这个单词是否是题目中所给的通过Trie树的search查询即可,枚举时需要通过dfs枚举每一个位置开头的单词,如果在dfs过程中发生他不是单词s的前缀,则进行剪枝。

2024-07-10 00:06:01 634

原创 【Trie】前缀树的三种操作(力扣面试经典150)

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-10 00:04:28 238

原创 【Trie】添加与搜索单词 - 数据结构设计(力扣211题)

这道题在Acwing题目的基础上添加了'.'这个“通配符”,也是是说在查找的过程中,如果遇到'.'他可以替换为任何字母,就好比打牌炸金花里面的王,可以替换任意牌。. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-09 17:05:23 418

原创 【二分】有序矩阵中第k小的元素

这个矩阵是一个行和列都递增的矩阵,但每行的最后一个元素是不一定大于下一行第一个元素的,题目要求时间复杂度低于O(n²),如果不对时间复杂度进行限制,本题可以通过优先级队列解决TopK问题、排序、快速选择等方法解决,题目描述的矩阵中[0][0]下标元素一定是最小值,[n-1][n-1]元素一定是最大值,我们可以通过二分从这最小值与最大值之间寻找,当枚举第一个mid的时候,我们可以遍历整个矩阵每一行通过二分查找小于等于mid 的个数,统计出矩阵中小于等于mid的个数。. - 力扣(LeetCode)

2024-07-09 15:45:05 378

原创 【并查集】并查集自身存储集合元素个数+路径压缩

并查集在初始化时每个单独集合都初始为-1,也就是数组每一个下标都初始为-1,当进行合并时将其中一个根节点的元素个数加到一个根上面,比如初始时下标1集合和下标2集合都是-1,在进行合并时先查找根,他们都是

2024-07-09 11:21:53 356

原创 【Trie】串树

申请一个”节点“然后让a这个节点的b孩子p[a]['b' - 'a']指向刚才申请的”节点“。通用查询也是一样比如查询abc这个串,首先我们看根节点是否有a这个孩子,有就去a这个孩子节点,没有之间返回0,到a这个根节点的孩子节点后,查看当前a节点是否有b孩子,重复上述操作。系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。这是一道串树的模板题,首先什么是串树。比如我们要存储查询如下字符串。活动 - AcWing。

2024-07-09 10:15:44 268

原创 【DFS】全排列II

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-09 09:07:18 331

原创 【DFS】字母大小写全排列

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。枚举每一个位置,如果当前位置是字母就大小写转换后枚举两次。. - 力扣(LeetCode)

2024-07-08 01:33:01 388

原创 【二分】搜索插入位置(二分+暴力)

上述代码的时间复杂度是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

原创 【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

原创 【单调栈】单调栈

系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。活动 - AcWing。

2024-07-05 16:20:47 169

原创 【STL】C++ STL常用方法

【代码】【STL】C++ STL常用方法。

2024-07-05 15:31:55 98

原创 【链表】重排链表

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。找到中间节点,从中间断开后将后部分逆转,然后合并两个链表。. - 力扣(LeetCode)

2024-07-01 16:23:05 263

原创 【链表】链表排序(归并排序)

利用归并的思想对链表进行排序,首先找到链表的中间节点通过getMid快慢指针,然后进行归并,在归并完成进行两个链表的合并操作。

2024-07-01 15:53:32 194

原创 【链表】两个链表的第一个公共节点

计算二者的长度差值,让长的先走插值步,然后同时开始直到相遇。66. 两个链表的第一个公共结点 - AcWing题库。

2024-07-01 15:10:46 318

原创 【哈希】模拟哈希(链式寻找法)

【代码】【哈希】模拟哈希(链式寻找法)

2024-07-01 14:46:01 107

原创 【双指针】最长无重复字串长度(滑动窗口)

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字。题目来自【牛客题霸】最长无重复子数组_牛客题霸_牛客网。. - 力扣(LeetCode)双指针+哈希 滑动窗口。

2024-07-01 11:48:39 235

原创 【堆排序】堆排序

系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。活动 - AcWing。

2024-07-01 11:15:42 244

原创 【TopK】O(n)复杂度Topk问题的三种解决方法(优先级队列、排序、快速选择)

优先级队列在解决topk问题时,如果要求最小的前k个或者最小的第k个,我们需要建立一个大根堆,首先将前k个元素入堆,然后从第k个开始进行判断,如果当前元素比堆顶的元素小就让他入堆,这样保证堆中每次都存这最小的k个里面最大的那一个,也就是前第k大的。如果是求最大的k个或者第k大的就需要创建一个小根堆,如果当前元素比堆顶元素大就弹出堆顶并让该元素入堆。具体步骤包括先用数据集合中的前K个元素建堆,然后将剩余的元素与堆顶元素比较,必要时进行替换,并维护堆的性质。利用快排的思想排序后获取第k小或者第k大的元素。

2024-07-01 10:58:21 382

原创 【快速幂】Pow(x, n)

- 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。. - 力扣(LeetCode)

2024-07-01 00:54:56 200

原创 【并查集】合并集合(路径压缩)

递归的方式实现 路径压缩。非递归方式实现路径压缩。

2024-07-01 00:31:20 359

原创 【栈】中缀表达式求值(中缀转后缀+逆波兰表达式求值)

首先将中缀表达式通过栈转为后缀表达式,然后将后缀表达式进行求值,中缀转后缀:1. 如果遇到数字之间加入后缀表达式结果,2. 如果遇到( 则之间加入栈中 如果遇到 )就从符号栈中一直取出符号直到取到( 为止并将它们加入最终得后缀表达式中,3. 如果遇到的是+-/* 那么判断他的优先级,如果当前符号的优先级比栈顶符号优先级高则之间入栈,否则就一直从栈里弹出符号不断加入后缀结果中。

2024-06-30 23:52:46 326

原创 【栈】逆波兰表达式求值

通过栈模拟:遍历tokens如果遇到数字就将数字入栈,如果碰到符号就从栈里弹出两个数字进行对应计算后将结果入栈,第一个弹出的数字为右操作数。

2024-06-30 20:21:28 352

SpringBoot小说项目

①密码加密:MD5 加盐算法实现密码的加密,基于原本的 MD5 加密算法进行加盐操作实现密码的加密。 ②拦截器:通过 SpringAOP 实现拦截器,对用户登录权限、异常通知等操作进行的统一处理,对返回响应数据进行统一格式的返回。 ③Redis 缓存:在项目中通过 Redis 缓存实现验证码注册功能以及对小说类型与关注收藏功能进行了缓存处理,并且通过缓存空值解决了缓 存穿透问题、使用互斥锁与缓存逻辑过期时间解决缓存击穿。 ④分布式部署:通过 Redis 实现 Session 的持久化、通过 Lua 脚本解决分布式锁实现时误删与原子性问题、提供了通过 Redis 实现全局唯一 ID 的生成器替代 MySQL 中自增主键。 ⑤接口限流:使用 Redis+SpringAOP 实现了注册、上传头像接口在规定时间内访问次数。⑥ 延迟队列:基于 RabbitMQ 的死信队列实现了用 户注册后 2 天发送提示邮件提高用户活性

2024-07-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除