![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣
西柚与蓝莓
好了阿鹏
展开
-
152. 乘积最大子数组 python 7行代码
152. 乘积最大子数组已解答中等相关标签相关企业给你一个整数数组nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个整数。6子数组 [2,3] 有最大乘积 6。0结果不能为 2, 因为 [-2,-1] 不是子数组。本质是空间换时间+贪心。原创 2024-07-19 00:17:15 · 265 阅读 · 0 评论 -
1310. 子数组异或查询 异或 前缀和 python
例如,对于数组$a_1,a_2,a_3,a_4,a_5,a_6$,其前缀异或数组为$b_1,b_2,b_3,b_4,b_5,b_6$。如果要计算子段$a_3,a_4,a_5$的异或值,可以通过$b_5\oplus b_2$来得到,因为$b_5$是$a_1\oplus a_2\oplus a_3\oplus a_4\oplus a_5$的异或值,$b_2$是$a_1\oplus a_2$的异或值,所以$b_5\oplus b_2$就是$a_3\oplus a_4\oplus a_5$的异或值。原创 2024-06-09 18:12:39 · 543 阅读 · 0 评论 -
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
当pre[i]出现 负数或0时,我们需要找到pre[presum-1],所以我们应该标记presum第一次出现的元素(需要求最长),这一点不难理解。比如上图找pre[i]=-1时,我们需要从前往后找pre数组,看看有没有pre[j]=-2,找到第一个-2,然后最大的长度就是index[ 2: 6],长度为5。如果pre[i]>0时,则说明从下标0开始到i的前缀和都大于0,所求的最大的长度就是i+1(因为下标从0开始,所以要加1)所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格。原创 2024-06-09 10:37:11 · 444 阅读 · 2 评论 -
2559. 统计范围内的元音字符串数(前缀和) o(n)时间复杂度
以元音开头和结尾的字符串是 "aba"、"ece"、"aa" 和 "e"。查询 [1,4] 结果为 3(字符串 "ece"、"aa"、"e")。查询 [0,2] 结果为 2(字符串 "aba" 和 "ece")。每个字符串都满足这一条件,所以返回 [3,2,1]。这两个值)并且以元音开头和结尾的字符串的数目。返回一个整数数组,其中数组的第。查询 [1,1] 结果为 0。返回结果 [2,3,0]。以及一个二维整数数组。原创 2024-06-07 15:59:13 · 586 阅读 · 0 评论 -
1685. 有序数组中差绝对值之和
给你一个有序整数数组nums。请你建立并返回一个整数数组result,它跟nums长度相同,且result[i]等于nums[i]与数组中所有其他元素差的绝对值之和。换句话说,result[i]等于,其中且j!= i(下标从 0 开始)。[4,3,5]假设数组下标从 0 开始,那么。原创 2024-06-03 19:52:52 · 269 阅读 · 0 评论 -
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
给你一个由 正 整数组成的数组 。如果数组中的某个子数组满足下述条件,则称之为 完全子数组 :返回数组中 完全子数组 的数目。子数组 是数组中的一个连续非空序列。示例 1:输入:nums = [1,3,1,2,2]输出:4解释:完全子数组有:[1,3,1,2]、[1,3,1,2,2]、[3,1,2] 和 [3,1,2,2] 。示例 2:输入:nums = [5,5,5,5]输出:10解释:数组仅由整数 5 组成,所以任意子数组都满足完全子数组的条件。子数组的总数为 10 。使用滑动窗原创 2024-06-02 10:08:24 · 467 阅读 · 0 评论 -
面试题 17.05. 字母与数字(前缀和)
将数字变成1,字母变成-1,题目就变成了,给你一个nums=[1,-1,1,1,1,1,-1,-1.....],然后让你求最长等于0的子数组(子数组一定是连续的),这个时候就可以使用前缀和。记录出错==================================================================’中出现过,则计算当前索引与之前出现的索引的差值,即当前子数组的长度。给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。,表示最长子数组的长度;原创 2024-06-01 11:05:11 · 662 阅读 · 0 评论 -
2730. 找到最长的半重复子字符串(c++,滑动窗口)
所谓半重复子字符串是指字符串中某个子串,其中相邻的两个字符相同,但不要求全部字符都相同。算法采用遍历字符串的方式,通过维护两个指针(preLeft和left)来记录重复字符的位置,并动态更新最长半重复子字符串的长度。最长半重复子字符串是 "5223" ,子字符串从 i = 0 开始,在 j = 3 处结束。最长半重复子字符串是 "11" ,子字符串从 i = 0 开始,在 j = 1 处结束。中至多有一对相邻字符是相等的,那么称这个字符串。s 就是一个半重复字符串,所以答案为 4。原创 2024-05-25 17:08:53 · 205 阅读 · 0 评论 -
1695. 删除子数组的最大得分(C++,滑动窗口)
这段代码使用了滑动窗口(双指针)的方法来动态维护一个不包含重复元素的子数组,并实时更新子数组的和。主要思想是,用r指针扩展窗口并添加新元素,同时更新窗口的和;当窗口内出现重复元素时,移动l指针缩小窗口,直到窗口内所有元素都是唯一的。在此过程中,不断更新并比较最长子数组的和,最终返回最大的和作为结果。最优子数组是 [5,2,1] 或 [1,2,5]的一个连续子序列,即如果它等于。最优子数组是 [2,4,5,6],请你从中删除一个含有。原创 2024-05-25 16:54:46 · 219 阅读 · 0 评论 -
2461. 长度为 K 子数组中的最大和(c++)
因为 15 是满足全部条件的所有子数组中的最大子数组和,所以返回 15。返回满足题面要求的最大子数组和。- [2,9,9] 不满足全部条件,因为元素 9 出现重复。- [9,9,9] 不满足全部条件,因为元素 9 出现重复。- [4,4,4] 不满足全部条件,因为元素 4 出现重复。- [1,5,4] 满足全部条件,和为 10。- [5,4,2] 满足全部条件,和为 11。- [4,2,9] 满足全部条件,和为 15。因为不存在满足全部条件的子数组,所以返回 0。是数组中一段连续非空的元素序列。原创 2024-05-24 22:47:13 · 260 阅读 · 0 评论 -
1838. 最高频元素的频数
对第三个元素执行 5 次递增操作,此时 nums = [1,4,13,13]。13 是数组中最高频元素,频数是 2。- 对第一个元素执行 3 次递增操作,此时 nums = [4,4,8,13]。4 是数组中最高频元素,频数是 2。- 对第二个元素执行 4 次递增操作,此时 nums = [1,8,8,13]。8 是数组中最高频元素,频数是 2。对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4]。4 是数组中最高频元素,频数是 3。原创 2024-05-24 11:59:20 · 179 阅读 · 0 评论 -
567. 字符串的排列(c++)滑动窗口
如果字符串的长度相等但哈希表不相等,则使用滑动窗口技术来检查排列。被初始化为大小为26,所有元素的初始值都为0。这些向量用于计算字符串。:在计算出现次数后,代码比较了两个哈希表。如果它们相等,那么意味着。如果它们在任何时候相等,函数返回 true。的长度,则函数返回 false。s2 包含 s1 的排列之一 ("ba").的排列,因此函数返回 true。,更新窗口的哈希表并将其与。计算每个字符的出现次数。中每个字符的出现次数。原创 2024-05-24 09:14:30 · 326 阅读 · 0 评论 -
C++今天长见识了(一个vector等于另外一个vector)
这种初始化赋值应该多学学。原创 2024-05-23 23:42:15 · 186 阅读 · 0 评论 -
643. 子数组最大平均数 I(C++)
最大平均数 (12-5-6+50)/4 = 51/4 = 12.75。//这个忘了报错很久,我就说一直报错怎么结果是错的。的连续子数组,并输出该最大平均数。的答案都将被视为正确答案。个元素组成的整数数组。请你找出平均数最大且。原创 2024-05-08 09:17:05 · 462 阅读 · 0 评论 -
1984. 学生分数的最小差值C++
1,7] 最高分和最低分之间的差值是 9 - 4 = 5。] 最高分和最低分之间的差值是 90 - 90 = 0。,7] 最高分和最低分之间的差值是 9 - 1 = 8。,7] 最高分和最低分之间的差值是 4 - 1 = 3。] 最高分和最低分之间的差值是 9 - 7 = 2。] 最高分和最低分之间的差值是 7 - 4 = 3。] 最高分和最低分之间的差值是 7 - 1 = 6。很奇怪,把变量放到外面就突然快了这么多。可能的最小差值是 0。可能的最小差值是 2。原创 2024-05-08 08:42:37 · 271 阅读 · 0 评论 -
1456. 定长子串中元音的最大数目C++
"lee"、"eet" 和 "ode" 都包含 2 个元音字母。任意长度为 2 的子字符串都包含 2 个元音字母。的单个子字符串中可能包含的最大元音字母数。子字符串 "iii" 包含 3 个元音字母。字符串 s 中不含任何元音字母。原创 2024-05-07 20:36:31 · 270 阅读 · 2 评论 -
2269. 找到一个数字的 K 美丽值C++
0043" 中的 "43" :43 能整除 430043。043" 中的 "30" :30 不能整除 430043。43" 中的 "00" :0 不能整除 430043。3" 中的 "04" :4 不能整除 430043。" 中的 "43" :43 能整除 430043。0" 中的 "24" :24 能整除 240。中提取的子串再转换为整数,以便进行进一步处理。" 中的 "40" :40 能整除 240。它用于将从原始字符串。是一个字符串里的连续一段字符序列。的长度,以便在其子串中进行迭代。原创 2024-05-07 20:32:07 · 384 阅读 · 0 评论 -
215. 数组中的第K个最大元素(时间复杂度o(n))
时间换空间,数组的末尾开始向前遍历,累积每个索引处的元素出现次数(从大到小累积)。当累积次数达到或超过 k 时,返回当前索引值减去 10000,即找到了第 k 大的元素。,用于记录每个元素出现的次数。数组的索引从 -10000 到 10004,对应了可能的元素取值范围。总体来说,该算法使用桶排序的思想,通过统计每个元素的出现次数,从大到小遍历桶来找到第 k 大的元素。数组后还没有找到第 k 大的元素,返回默认值 0。请注意,你需要找的是数组排序后的第。,将每个元素的出现次数记录在。个最大的元素,而不是第。原创 2024-02-27 10:00:35 · 482 阅读 · 1 评论 -
对链表使用插入排序的C语言实现示例
为了做到这一点,我们从哑节点开始,沿着新链表向后遍历,直到找到插入位置或者到达链表末尾。的哑节点,它的作用是作为新链表的头部。这样做的好处是,哑节点可以简化插入操作的边界情况处理,同时也可以减少对头节点是否变化的判断。来记录当前节点在新链表中的插入位置的前一个节点,这样可以更方便地进行插入操作。一旦找到了正确的插入位置,我们就将当前节点插入到新链表中。接着,我们继续遍历原始链表,重复上述步骤,直到所有节点都被插入到了新链表中。最后,我们返回新链表的头部,即哑节点的下一个节点,作为排序后的链表。原创 2024-02-16 22:31:41 · 618 阅读 · 0 评论 -
只出现一次的数字
我们将数组中的所有元素进行异或运算,由于除了一个元素只出现一次以外,其余每个元素都出现两次,那么相同的元素进行异或运算结果为 0,而任何数与 0 进行异或运算都等于其本身。因此,最终的结果就是只出现一次的那个元素。,最终得到的就是只出现一次的元素的值。要设计一个线性时间复杂度且只使用常量额外空间的算法来解决这个问题,可以利用异或运算的性质。,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。原创 2024-02-16 22:28:05 · 398 阅读 · 0 评论 -
19 删除链表的倒数第 N 个结点
这段代码使用了双指针的方法,其中一个指针先走 n 步,然后两个指针一起走,直到第一个指针到达链表末尾,此时第二个指针指向的位置就是要删除的节点。,可以确保链表中的每个节点都有一个前一个节点,使得删除操作的处理更加统一和简单。可以简化代码逻辑,提高代码的可读性和可维护性,尤其是在处理链表的边界情况时。在遍历过程中始终位于链表的开头,不会被删除,因此不会影响最终的结果。删除倒数第 n 个节点,并最后打印删除节点后的链表。函数用于创建新的链表节点,并返回指向该节点的指针。给你一个链表,删除链表的倒数第。原创 2024-02-13 22:35:11 · 747 阅读 · 0 评论 -
环形链表(快慢指针)
在这个例子中,我们手动创建了一个包含五个节点的链表,并设置第五个节点指向第二个节点,形成了一个环。当运行程序时,输出应该是 "链表中存在环"。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。这里同样使用了快慢指针的方法,注意在C语言中要使用。可以创建一个简单的链表,并手动设置环。如果链表中有某个节点,可以通过连续跟踪。,请你反转链表,并返回反转后的链表。仅仅是为了标识链表的实际情况。,判断链表中是否有环。给你一个链表的头节点。原创 2024-02-03 21:13:31 · 548 阅读 · 0 评论 -
row[i] = col[j] = TrueIndexError: list assignment index out of range
你遇到的错误,“IndexError: list assignment index out of range(索引错误:列表分配索引超出范围)”,表示你正试图为列表中超出实际大小的索引赋值。然而,很可能这些索引超出了列表的实际长度,导致了 IndexError。确保在尝试为特定索引赋值之前,已使用适当的大小初始化了。在列表的有效范围内。你可以添加条件检查来确保这一点。在你的具体代码片段中,似乎你正试图在列表。要解决此问题,你需要确保索引。例如,使用零进行初始化。原创 2024-02-01 15:18:38 · 337 阅读 · 0 评论 -
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数
原地哈希算法的原理是通过修改输入数据本身,将数据映射到正确的位置上,从而完成一些特定的操作。在具体的场景中,原地哈希算法通常用于解决一些空间复杂度受限制的问题,以达到在常数级别的额外空间内完成操作的目的。然后再次遍历数组,找到第一个不在正确位置上的数,其索引加一即为缺失的最小正整数。这样,通过两次遍历和原地交换的方式,就可以在常数级别的额外空间内找到未排序整数数组中缺失的最小正整数。在这一步中,如果 nums[i] 不在正确的位置上,并且它应该在的位置上的数不等于它,就进行交换。原创 2024-01-31 22:42:47 · 478 阅读 · 0 评论