力扣题解系列
文章平均质量分 78
力扣每日一题
无限大.
这个作者很懒,什么都没留下…
展开
-
力扣题解2516
大家好,欢迎来到无限大的频道今天继续给大家带来每日一题。原创 2024-09-27 15:23:40 · 541 阅读 · 0 评论 -
力扣题解2535
大家好,欢迎来到无限大的频道。今日继续给大家带来每日一题的题解。原创 2024-09-26 12:01:38 · 299 阅读 · 0 评论 -
力扣题解2306
这个代码的目的是计算可以通过交换候选名字的首字母生成的有效公司名字的数量。它使用了哈希表来高效地存储候选名字,并通过双重循环来计算有效的名字组合。原创 2024-09-25 11:32:52 · 983 阅读 · 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 · 524 阅读 · 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 · 643 阅读 · 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 · 479 阅读 · 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 · 476 阅读 · 0 评论 -
力扣题解2390
我看到这个题,思路就是直接抽象,题目要求的就是字符串当中的星号和非星号区分开来,每当遇到一个星号时,移除前面最近的一个字符。重建字符串:遍历完字符串后,栈中剩下的字符就是移除星号后所需的字符串。栈的使用:我们使用了一个与输入字符串长度相同的栈来存储字符,最坏情况下(没有星号的情况下),栈的大小可以达到 n。遍历字符串:字符串的长度为 n,我们需要遍历每个字符一次,因此这一部分的时间复杂度为 O(n)。重建字符串:在遍历完字符串后,我们还需要将栈中的字符复制回字符串中,这也是 O(n) 的操作。原创 2024-09-14 15:02:26 · 671 阅读 · 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 · 1199 阅读 · 0 评论 -
力扣题解2398
在最坏情况下,每个元素在这个队列中可能会被添加和移除一次,因此这个循环的时间复杂度是 O(1),因为对于每个 `i`,这段代码最多只会遍历它当时有效的 `qb`。因此,对于每个外层的 `i`,`j` 也最多只遍历一次整个数组,总体来说这个循环的时间复杂度也是 O(n)。具体来说,在添加新的机器人时,队列中存储的是当前在窗口内机器人的索引,确保其对应的充电时间是单调递减的。- 变量 `res`、`n`、`runningCostSum`、`qf` 和 `qb` 均为常量大小,使用 O(1) 的空间。原创 2024-09-13 15:18:33 · 742 阅读 · 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 · 811 阅读 · 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 · 524 阅读 · 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 · 507 阅读 · 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 · 815 阅读 · 0 评论 -
力扣题解2576
原先整数数组的下标在被标记的之后,只是数据被标记,而非其固定的位置被标记,也就是说,是因为这个数据符合条件,从而标记该位置,而不是因为该位置符合条件,而去标记数据。- 在最坏情况下,指针 `j` 可能会从中间走到数组的末尾,但每次内层的 `while` 循环只会向前移动 `j` 指针,因此每个元素最多只会被遍历一次。- 在双指针的部分,外层循环的指针 `i` 最多会遍历 (n/2) 次(即左半边的元素),而内层循环的指针 `j` 也最多遍历 (n) 次。- 因此,双指针部分的时间复杂度为 (O(n))。原创 2024-09-12 23:30:55 · 586 阅读 · 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 · 637 阅读 · 0 评论 -
力扣题解2181
但是在合并节点的过程中,每当遇到 `0` 并且 `sum > 0` 时,会动态地分配一个新节点并将其添加到结果链表中。最坏情况下,如果链表中的所有节点都是非零值,那么新链表将包含 n/2 个节点(因为每两个 `0` 之间的节点会合并成一个节点)。对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。要解决这个问题,我们需要遍历给定的链表,并对链表中相邻的 0 之间的节点进行合并。因此,最终新链表的节点数与原链表的节点数成正比,导致空间复杂度为 O(n)。原创 2024-09-09 17:20:55 · 925 阅读 · 1 评论