力扣题解系列
文章平均质量分 81
力扣每日一题
无限大.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
力扣每日一题--2025.7.17
这种方法的核心思想是通过观察子序列的最后两项来动态构建有效子序列。我们发现,如果一个有效子序列的最后两项模 k 的结果分别为 y 和 x,那么在它前面添加一个模 k 结果为 y 的元素,就能形成一个新的有效子序列,其最后两项为 x 和 y。这种方法的核心思想是枚举所有可能的相邻元素之和模 k 的结果 m(从 0 到 k-1),然后对每个 m 分别寻找最长的有效子序列。对于固定的 m,如果子序列的最后一项模 k 为 x,那么倒数第二项模 k 必须为 (m-x) mod k。原创 2025-07-17 22:36:44 · 946 阅读 · 0 评论 -
力扣每日一题--2025.7.16
本题考察了对子序列概念的理解以及贪心算法的应用。通过分析相邻元素之和的奇偶性规律,我们发现有效子序列有两种基本类型,并分别计算了它们的最大长度。类型 0 子序列要求所有元素具有相同的奇偶性类型 1 子序列要求元素的奇偶性交替出现通过计算这两种类型的最大长度并取较大值,我们得到了问题的解。希望今天的讲解能帮助你更好地理解这个问题和贪心算法的应用!如果你有任何疑问或想法,欢迎在评论区留言讨论。明天见!👋。原创 2025-07-16 19:37:19 · 1026 阅读 · 0 评论 -
力扣每日一题--2025.7.15
大家好!今天我们要来聊聊一道有趣的编程题——有效单词。原创 2025-07-15 11:07:58 · 1044 阅读 · 0 评论 -
力扣每日一题--2025.7.14
今天我们要解决的是力扣上的第 1290 题——二进制链表转整数。原创 2025-07-14 16:41:19 · 448 阅读 · 0 评论 -
力扣题解 3233. 统计不是特殊数字的数字数量(中等)
给定两个正整数 ( l ) 和 ( r ),我们需要找出在区间 ([l, r]) 内的数字中,不是特殊数字的数量。一个数字被称为特殊数字,当且仅当它有且仅有两个真因数。根据定义,真因数是指除了数字本身之外的所有正因数。因子的性质:特殊数字的特征:质数的要求:原创 2024-11-22 10:51:57 · 587 阅读 · 0 评论 -
力扣题解3248 矩阵中的蛇(简单)
给定一个大小为 ( n x n ) 的矩阵 ,其中每个单元格的标识由公式 计算得出。蛇从矩阵的起始位置(单元格 0)开始,并根据给定的命令(“UP”、“RIGHT”、“DOWN” 和 “LEFT”)进行移动。题目保证在移动过程中蛇始终位于矩阵的边界内。需要返回执行完所有命令后,蛇所停留的最终单元格的位置。该解题思路运用了状态转移的算法思维模式。通过维护一个状态变量(蛇的当前位置),根据输入的命令逐步更新状态,最终得到结果。这种方法适用于动态变化的场景,通过简单的状态更新实现目标。原创 2024-11-21 18:37:45 · 705 阅读 · 0 评论 -
力扣题解3243 新增道路查询后的最短距离 I
广度优先遍历 (BFS) 与动态规划 (Dynamic Programming)广度优先遍历BFS 适用于图的最短路径问题,尤其是所有边的权值相同的情况。通过逐层遍历,可以有效找到从起点到终点的最短路径。动态规划动态规划适合在路径长度需要动态更新的情况下,通过不断维护到达每个节点的最小路径,还可以在每次查询后直接更新结果。原创 2024-11-19 09:37:04 · 888 阅读 · 0 评论 -
力扣题解661 图片平滑器
算法设计能力:明确步骤来计算每个单元的值,考虑边界条件。空间和时间复杂度的理解:对于每个像素点的处理需要遍历周围像素,理解算法的复杂度。数据结构运用:使用二维数组来表示图像及其处理结果,熟悉基本的数据结构运用。条件判断:确保在边缘和角落正确处理缺少的单元格。原创 2024-11-18 07:43:58 · 558 阅读 · 0 评论 -
力扣题解 1928
定义一个二维数组。原创 2024-10-03 19:55:13 · 839 阅读 · 0 评论 -
力扣题解1870
这道题是一个典型的算法题,涉及计算在限制的时间内列车速度的最小值。这是一个优化问题,通常需要使用二分查找来求解。原创 2024-10-02 20:48:46 · 1165 阅读 · 0 评论 -
力扣题解 983
大家好,欢迎来到无限大的判断,祝大家国庆假期愉快最低票价在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有 三种不同的销售方式 :通行证允许数天无限制的旅行。 例如,如果我们在第 2 天获得一张 为期 7 天 的通行证,那么我们可以连着旅行 7 天:第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。返回 你想要完成在给定的列表 days 中列出的每原创 2024-10-01 17:10:14 · 995 阅读 · 0 评论 -
力扣题解1845
C++的最小堆实现能够高效地支持预约和取消预约操作,时间复杂度均为O(log n)。而C语言的实现则使用了数组,虽然简单易懂,但预约操作的时间复杂度为O(n),不适合处理较大座位数量的情况。在实际开发中,通常建议使用更高效的实现(如C++中的最小堆)以提高性能。原创 2024-09-30 16:16:35 · 585 阅读 · 0 评论 -
力扣题解 2073
大家好,欢迎来到无限大的频道今日继续给大家带来每日一题的题解。原创 2024-09-29 15:36:33 · 1089 阅读 · 0 评论 -
力扣题解2286
大家好,欢迎来到无限大的频道今天继续给大家带来力扣题解以组为单位订音乐会的门票一个音乐会总共有 n 排座位,编号从 0 到 n - 1 ,每一排有 m 个座椅,编号为 0 到 m - 1 。你需要设计一个买票系统,针对以下情况进行座位安排:由于观众非常挑剔,所以:请你实现 BookMyShow 类:这道题目中,我们需要设计一个较为复杂的座位安排系统,这里我们使用线段树来维护我们需要的数据 —— 每排座位的最小已坐座位数和已坐座位数之和。我们需要实现两个主要功能:和。这两个方法分别按照题目要求,在条件限制原创 2024-09-28 16:46:06 · 883 阅读 · 0 评论 -
力扣题解2516
大家好,欢迎来到无限大的频道今天继续给大家带来每日一题。原创 2024-09-27 15:23:40 · 1037 阅读 · 0 评论 -
力扣题解2535
大家好,欢迎来到无限大的频道。今日继续给大家带来每日一题的题解。原创 2024-09-26 12:01:38 · 456 阅读 · 0 评论 -
力扣题解2306
这个代码的目的是计算可以通过交换候选名字的首字母生成的有效公司名字的数量。它使用了哈希表来高效地存储候选名字,并通过双重循环来计算有效的名字组合。原创 2024-09-25 11:32:52 · 1111 阅读 · 0 评论 -
力扣题解2207
给定一个字符串 text 和一个长度为 2 的字符串 pattern,你可以在 text 的任意位置插入一个字符(这个字符必须是 pattern[0] 或 pattern[1]),目的是使 text 中的 pattern 子序列数量最多。每当遇到 pattern[1] 时,之前所有的 pattern[0] 都可以与之形成一pattern子序列,因此将 count_first 累加到 count_combined 中。返回通过插入 pattern[0] 或 pattern[1] 后形成的最大子序列数量。原创 2024-09-24 18:31:08 · 805 阅读 · 0 评论 -
力扣题解997
给你一个数组 trust ,其中 trust[i] = [ai, bi] 表示编号为 ai 的人信任编号为 bi 的人。综合以上三步,整体的时间复杂度为: [ O(n + m) ] 其中 (n) 是小镇中人的数量,(m) 是信任关系的数量。遍历信任关系:我们遍历这个 trust 数组,每当 a 信任 b,就对 a 的信任度减1,对 b 的信任度加1。检查条件:在所有人中,如果有一位人士的信任度为 n-1,那么这就是我们要找的小镇法官,否则法官不存在。小镇里有 n 个人,按从 1 到 n 的顺序编号。原创 2024-09-22 21:01:00 · 758 阅读 · 0 评论 -
力扣题解2374
除了 `in_degree_sum` 数组外,函数中使用的其他变量(如 `max_node`, `max_sum` 和循环变量)只占用常数空间,不会随输入规模变化。图由一个下标从 0 开始、长度为 n 的整数数组 edges 表示,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i] 的 有向 边。函数使用了一个额外的数组 `in_degree_sum` 来存储每个节点的边积分,其大小为 `edgesSize`。我们需要计算每个节点的边积分,即所有指向该节点的边的源节点编号的总和。原创 2024-09-21 15:58:14 · 596 阅读 · 0 评论 -
力扣题解2414
字母序连续字符串的定义:两个相邻的字符如果它们的ASCII值相差1,则认为它们是连续的。例如,'a'的ASCII值是97,'b'的ASCII值是98,'b'和'c'是连续的,因为98和99相差1。如果当前字符的ASCII值等于前一个字符的ASCII值加1,说明它们是连续的,当前连续子字符串的长度cur加1。 给你一个仅由小写英文字母组成的字符串 s ,返回其 最长 的 字母序连续子字符串 的长度。目的是找出一个仅由小写字母组成的字符串中,最长的字母序连续子字符串的长度。原创 2024-09-19 17:06:48 · 573 阅读 · 0 评论 -
力扣题解2390
我看到这个题,思路就是直接抽象,题目要求的就是字符串当中的星号和非星号区分开来,每当遇到一个星号时,移除前面最近的一个字符。重建字符串:遍历完字符串后,栈中剩下的字符就是移除星号后所需的字符串。栈的使用:我们使用了一个与输入字符串长度相同的栈来存储字符,最坏情况下(没有星号的情况下),栈的大小可以达到 n。遍历字符串:字符串的长度为 n,我们需要遍历每个字符一次,因此这一部分的时间复杂度为 O(n)。重建字符串:在遍历完字符串后,我们还需要将栈中的字符复制回字符串中,这也是 O(n) 的操作。原创 2024-09-14 15:02:26 · 774 阅读 · 0 评论 -
力扣题解815
例如,路线 routes[0] = [1, 5, 7] 表示第 0 辆公交车会一直按序列 1 -> 5 -> 7 -> 1 -> 5 -> 7 -> 1 -> ... 这样的车站路线行驶。由于每个站点只会被访问一次,且每个线路也只会被访问一次,时间复杂度为 O(sum(routesColSize))。通过哈希映射,将站点映射到线路,能够快速获取经过某个站点的所有公交线路,避免了重复遍历,提高了效率。BFS 的层次遍历特性确保了在找到目标站点时,返回的深度是最小的,即乘坐的公交车数量是最少的。原创 2024-09-17 22:45:59 · 1305 阅读 · 0 评论 -
力扣题解2398
在最坏情况下,每个元素在这个队列中可能会被添加和移除一次,因此这个循环的时间复杂度是 O(1),因为对于每个 `i`,这段代码最多只会遍历它当时有效的 `qb`。因此,对于每个外层的 `i`,`j` 也最多只遍历一次整个数组,总体来说这个循环的时间复杂度也是 O(n)。具体来说,在添加新的机器人时,队列中存储的是当前在窗口内机器人的索引,确保其对应的充电时间是单调递减的。- 变量 `res`、`n`、`runningCostSum`、`qf` 和 `qb` 均为常量大小,使用 O(1) 的空间。原创 2024-09-13 15:18:33 · 911 阅读 · 0 评论 -
力扣题解2848
这个问题可以理解为在数轴上有多辆车,每辆车的停车区域用一个区间来表示,例如 nums[i] = [starti, endi] 表示第 i 辆车的起点为 starti,终点为 endi。我们需要计算在数轴上这些车的停车区域重叠部分所覆盖的整数点的总数。对于任意下标 i,nums[i] = [starti, endi] ,其中 starti 是第 i 辆车的起点,endi 是第 i 辆车的终点。所有被覆盖的整数点为 {1, 2, 3, 4, 5, 6},所以被覆盖的整数点总数为 6。原创 2024-09-15 22:54:37 · 960 阅读 · 0 评论 -
力扣题解2555
比方说 k = 2 ,你可以选择线段 [1, 3] 和 [2, 4] ,你可以获得满足 1 <= prizePositions[i] <= 3 或者 2 <= prizePositions[i] <= 4 的所有奖品 i。再给你一个整数 k。使用 dp[i + 1] = fmax(dp[i], i - x + 1) 更新 dp 数组,确保 dp[i + 1] 是到目前为止所能覆盖的最大奖品数量。使用动态规划(DP)数组 dp 来存储到每个位置的最大奖品覆盖数,利用二分查找来加快寻找线段覆盖边界的过程。原创 2024-09-11 23:01:49 · 668 阅读 · 0 评论 -
力扣题解2332
排序:排序 buses 和 passengers 的时间复杂度分别是 O(n log n) 和 O(m log m),其中 n 是公交车数量,m 是乘客数量。确保 lastCatchTime 不与任何乘客的到达时间相同,通过减少 lastCatchTime,直到它与任何乘客的到达时间不冲突。代码中没有使用额外的数组或复杂的数据结构,除了输入数组和一些常数空间的变量之外,没有额外的空间开销。因此,总的时间复杂度为 O(n log n + m log m),因为排序操作是最耗时的部分。原创 2024-09-18 21:01:24 · 590 阅读 · 0 评论 -
力扣题解1184
我们已知每一对相邻公交站之间的距离,distance[i] 表示编号为 i 的车站和编号为 (i + 1) % n 的车站之间的距离。由于 d可能最多等于 n(在最坏情况下,即 `start` 为 0,`destination` 为 n-1),所以我们可以将 d的复杂度视为 O(n)。假设 `start` 和 `destination` 之间的距离为 d,这个部分的时间复杂度是 O(d)。由于 `distanceSize` 为 n,这个部分的时间复杂度是 O(n)。这是因为在环形路线中,总距离是固定的。原创 2024-09-16 18:50:52 · 951 阅读 · 0 评论 -
力扣题解2576
原先整数数组的下标在被标记的之后,只是数据被标记,而非其固定的位置被标记,也就是说,是因为这个数据符合条件,从而标记该位置,而不是因为该位置符合条件,而去标记数据。- 在最坏情况下,指针 `j` 可能会从中间走到数组的末尾,但每次内层的 `while` 循环只会向前移动 `j` 指针,因此每个元素最多只会被遍历一次。- 在双指针的部分,外层循环的指针 `i` 最多会遍历 (n/2) 次(即左半边的元素),而内层循环的指针 `j` 也最多遍历 (n) 次。- 因此,双指针部分的时间复杂度为 (O(n))。原创 2024-09-12 23:30:55 · 643 阅读 · 0 评论 -
力扣题解2552
对于每一个满足 i < j < k < l 的组合,我们都可以直接检查 nums[i] < nums[k] < nums[j] < nums[l] 是否成立。例如针对每个 nums[k] 和 nums[j] 的组合,检查前面的 i 和后面的 l。此方法虽然仍然拥有三重循环,但通过减少某些不必要的检查,使时间复杂度降到 O(n^3),在可处理的范围内对于中等规模 n 的数组来说是可行的。固定 k 时,计算 nums[j] > nums[k] 情况下满足条件 nums[i] < nums[k] 的个数。原创 2024-09-10 22:21:06 · 730 阅读 · 0 评论 -
力扣题解2181
但是在合并节点的过程中,每当遇到 `0` 并且 `sum > 0` 时,会动态地分配一个新节点并将其添加到结果链表中。最坏情况下,如果链表中的所有节点都是非零值,那么新链表将包含 n/2 个节点(因为每两个 `0` 之间的节点会合并成一个节点)。对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。要解决这个问题,我们需要遍历给定的链表,并对链表中相邻的 0 之间的节点进行合并。因此,最终新链表的节点数与原链表的节点数成正比,导致空间复杂度为 O(n)。原创 2024-09-09 17:20:55 · 1038 阅读 · 1 评论
分享