![](https://img-blog.csdnimg.cn/direct/5f2f9bbd890844a781a6212dfd3535e1.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
力扣数据结构训练
算法特训
糖醋_诗酒
逝者已矣 生者如斯
展开
-
1535. 找出数组游戏的赢家
为 1,则直接返回前一个元素。否则,它将连续胜利的计数初始化为 1,并将迄今为止看到的最大数字初始化为前一个元素。然后,它从数组的第三个元素开始迭代,根据需要更新前一个元素、连续胜利的计数和迄今为止看到的最大数字。游戏的规则如下:从数组的第一个元素开始,将其与下一个元素进行比较。如果当前元素较大,继续将其与后续元素进行比较,直到找到一个比当前元素大的元素,或者已经与。如果当前元素小于下一个元素,则将当前元素更新为下一个元素,并重置连续胜利的计数。方法首先将前一个元素初始化为数组前两个元素中的最大值。原创 2024-05-19 11:34:31 · 146 阅读 · 0 评论 -
2644. 找出可整除性得分最大的整数
向量中可被当前除数整除的元素数量来得到。分数就是可被除数整除的元素数量。然后,函数将当前除数的分数与迄今为止找到的最高分数()进行比较,并在当前除数的分数更高或分数相同但除数小于当前答案时更新答案(向量,并计算每个除数的分数,通过统计。作为输入,并返回一个整数。该函数接受两个整数类型的向量。原创 2024-05-18 10:38:21 · 152 阅读 · 0 评论 -
5. 最长回文子串
【代码】【无标题】原创 2024-05-17 11:05:34 · 195 阅读 · 0 评论 -
4. 寻找两个正序数组的中位数
为了保证 m <= n,如果 m > n,我们就调用自己并将两个数组交换位置。:如果 B[j-1] > A[i],说明 i 太小了,我们需要增大 i。:如果 A[i-1] > B[j],说明 i 太大了,我们需要减小 i。:默认返回值,实际上这段代码永远不会执行到这一步。:如果找到了合适的 i,我们就计算中位数。:初始化 i 的搜索范围。:获取两个数组的长度。原创 2024-05-17 11:00:42 · 271 阅读 · 0 评论 -
2866. 美丽塔 II
【代码】2866. 美丽塔 II。原创 2024-05-17 10:53:50 · 134 阅读 · 0 评论 -
826. 安排工作以达到最大收益
目标是分配工作给工人,使得能够获得的最大总利润最大化。每个工人只能分配一个工作,且只有当工人的能力大于或等于工作的难度时,他才能完成该工作。排序后,我们可以按顺序分配工作,确保每个工人都能得到他能做的最难的工作,从而获得最大的利润。数组,对于每个工人,找到他能做的最难的工作,并更新当前能够获得的最大利润。这样做的目的是为了能够根据难度对这些工作进行排序。累加每个工人能够获得的最大利润,得到最终的最大总利润。向量,将每个工作的难度和利润封装成。最终,函数返回最大总利润。原创 2024-05-17 09:22:11 · 777 阅读 · 0 评论 -
10. 正则表达式匹配
则它可以匹配任何字符;表示至少1个前面的字符,这时状态转移方程为。这个实现使用了动态规划的思想,时间复杂度为。是一个二维向量,用于存储动态规划的状态。表示0个前面的字符,这时状态转移方程为。这两种情况是逻辑或的关系,所以使用了。函数是一个辅助函数,用于判断字符串。接下来,代码使用两层循环遍历字符串。,表示两个空字符串是可以匹配的。不能直接与字符串中的字符匹配。个字符匹配,则状态转移方程为。的全部字符是否可以与模式。,则有两种情况:一种是。,则只有一种情况:如果。如果模式中的字符不是。原创 2024-05-11 11:19:17 · 163 阅读 · 0 评论 -
二分查找专题
【代码】二分查找专题。原创 2024-05-03 16:55:22 · 101 阅读 · 0 评论 -
35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。确定要查找的区间到底是左闭右开[left, right),还是左闭又闭[left, right],这就是不变量。这道题目的前提是数组是有序数组,这也是使用二分查找的基础条件。你可以假设数组中无重复元素。原创 2024-05-02 18:25:08 · 115 阅读 · 0 评论 -
704. 二分查找
如果说定义 target 是在一个在左闭右开的区间里,也就是[left, right) ,那么二分法的边界处理方式则截然不同。第一种写法,我们定义 target 是在一个在左闭右闭的区间里,区间的定义这就决定了二分法的代码应该如何写,原创 2024-05-02 17:03:54 · 11 阅读 · 0 评论 -
560. 和为 K 的子数组
空间复杂度是 O(n),因为需要存储前缀和的哈希表,最坏情况下前缀和的数量与数组的长度相同。初始化哈希表,将前缀和为 0 的计数设置为 1,这是为了处理当子数组的起始点在数组的第一个元素之前的情况。这个算法的时间复杂度是 O(n),其中 n 是数组。创建一个哈希表,用于存储前缀和及其出现的次数。的连续子数组的数量。如果存在这样的前缀和,说明找到了一个和为。的子数组,将这个前缀和对应的次数加到。更新当前的前缀和,将当前元素。的子数组的数量,以及前缀和。更新哈希表,将当前的前缀和。遍历完成后,返回计数器。原创 2024-05-02 14:34:33 · 168 阅读 · 0 评论 -
3. 无重复字符的最长子串
问题可以描述为:给定一个字符串,找到最长的不包含重复字符的子字符串的长度。:定义一个名为Solution的类,通常在编程题解中使用,用来包含一个或多个函数,这些函数解决特定的问题。是一个集合,它不会存储重复的元素,这有助于快速判断一个字符是否已经在子字符串中。作为参数,并返回一个整数,表示最长的不含重复字符的子字符串的长度。:在遍历完整个字符串后,返回最长的不含重复字符的子字符串的长度。,用来存储在当前不含重复字符的子字符串中的字符。当前子字符串的长度是。,用来记录不含重复字符的子字符串的左边界。原创 2024-05-02 14:04:17 · 316 阅读 · 0 评论