算法
算法
byteinit
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode第407题:二维接雨水
这个问题是对一维接雨水问题的拓展,引入了二维的高度图。通过利用优先队列,我们能够有效地处理地形的边界和低洼区域,实现动态填充水的过程。这个方法确保了每个位置的水高度是由其最低的边界决定的。原创 2025-03-04 10:21:26 · 437 阅读 · 0 评论 -
LeetCode 第212题:单词搜索 II
Trie树构建:我们使用Trie树来存储所有需要查找的单词,这样可以高效地进行前缀匹配。深度优先搜索(DFS):在二维网格中,从每个字符开始进行DFS,以查找可能的单词。标记访问:在DFS过程中,将已经访问过的字符标记为特殊符号(如),以避免重复使用。方向搜索:对每个字符进行上下左右四个方向的递归搜索,探索所有可能的路径。结果去重:如果在DFS过程中找到一个完整的单词,将其加入结果列表,并在Trie树中标记为已找到,以防重复加入。恢复状态:在DFS结束后,恢复网格中字符的原始状态,以便其他路径的搜索。原创 2025-02-27 11:25:12 · 384 阅读 · 0 评论 -
LeetCode 第127题:单词接龙
广度优先搜索(BFS):我们使用BFS来找出从beginWord到endWord的最短转换序列长度。BFS适用于寻找最短路径的问题。使用队列:我们利用队列来实现BFS,队列中保存当前层的所有单词。字符替换:对于当前单词的每个字符,尝试所有可能的字母替换(从'a'到'z'),生成新的单词。字典检查:如果新生成的单词存在于给定的单词列表(转换为集合以加快查找速度)中,我们将其加入队列,并从集合中移除以避免重复访问。层级计数level变量用于记录当前转换的层数,每次处理完一层后递增。终止条件。原创 2025-02-27 11:22:34 · 244 阅读 · 0 评论 -
LeetCode 25题:K 个一组翻转链表
虚拟头节点:使用一个虚拟头节点简化边界条件的处理,特别是在操作链表头部时。指针操作:使用多个指针来追踪需要翻转的部分和已经翻转的部分。是上一个翻转组的结尾,kthNode找到当前组的结尾。翻转逻辑:在每一组中,使用常规的链表翻转方法进行局部翻转。连接翻转后的部分:在完成一组的翻转后,重新连接翻转后的部分,准备处理下一组。结束条件:如果不足k个节点,直接退出循环,因为不需要翻转。通过这些步骤,我们可以实现每K个节点的翻转操作。原创 2025-02-26 16:19:11 · 230 阅读 · 0 评论 -
LeetCode 224题:基本计算器
栈的使用:利用栈来存储在括号之前的结果和符号。当遇到右括号时,计算括号内的结果并与栈中的结果结合。符号处理:使用一个sign变量来记录当前的运算符是加还是减。数字处理:当遇到数字时,需要考虑多位数,因此在遇到数字后要继续查看后面的字符是否还是数字。括号处理:当遇到左括号时,将当前的结果和符号存入栈中,并重置当前结果和符号。当遇到右括号时,利用栈中的符号和结果进行更新。通过这些步骤,我们可以处理包含加减法和括号的表达式,正确计算出结果。原创 2025-02-26 15:04:38 · 225 阅读 · 0 评论 -
LeetCode 76题:最小覆盖子串
LeetCode 76题是“最小覆盖子串”(Minimum Window Substring)。下面是一个Java解题的示例代码,并附上每行的注释。通过这种方法,可以有效地找到字符串。原创 2025-02-26 10:49:45 · 429 阅读 · 0 评论 -
LeetCode 68题:文本左右对齐
初始化和准备创建一个结果列表result来存储格式化后的每一行。使用一个索引index来遍历单词列表words。逐行处理单词使用一个循环来填充每一行的单词,直到达到最大宽度maxWidth。对于每一行,首先计算该行可以容纳的单词数量。计算当前行内单词的总长度(包括单词之间的空格)。判断对齐类型左对齐:如果是最后一行,或者当前行只有一个单词,则左对齐:将单词依次加入行中,并在单词之间加入一个空格。用空格填充整行至maxWidth。原创 2025-02-20 11:16:59 · 321 阅读 · 0 评论 -
LeetCode 第 30 题:串联所有单词的子串
在这道题中,你需要在一个字符串中找到所有子串,这些子串由一组单词的串联组成,每个单词的长度相同。原创 2025-02-20 14:59:34 · 333 阅读 · 0 评论 -
LeetCode第42题:接雨水
LeetCode第42题是“接雨水”,要求计算能够接住多少雨水。原创 2025-02-14 16:14:44 · 296 阅读 · 0 评论 -
LeetCode第27题:移除元素
LeetCode第27题是“移除元素”,要求从数组中移除指定的元素,并返回移除后数组的新长度。原创 2025-02-14 16:12:21 · 270 阅读 · 0 评论 -
LeetCode 第 88 题:合并两个有序数组
LeetCode 第 88 题是“合并两个有序数组”。题目要求将两个有序数组合并为一个有序数组,假设第一个数组有足够的空间来容纳第二个数组的所有元素。原创 2025-02-14 14:57:01 · 273 阅读 · 0 评论 -
JAVA手撕断路器,实现滑动窗口内的失败阈值统计,动态调整是否熔断
通过滑动窗口机制,我们可以更精确地统计失败率,并根据动态的失败率调整熔断状态。这种实现方式适用于高并发场景,能够有效提高系统的稳定性和容错能力。原创 2025-02-12 11:43:17 · 493 阅读 · 0 评论
分享