力扣
西柚与蓝莓
好了阿鹏
展开
-
1013. 将数组分成和相等的三个部分 数组切分
会有这种例子出现,加大了题目的难度arr=[0,0,0,0],只有可以将其划分为三个和相等的。形式上,如果可以找出索引。就可以将数组三等分。原创 2024-09-27 22:56:04 · 67 阅读 · 0 评论 -
819. 最常见的单词 哈希表
"ball" 出现了两次(没有其他单词出现这么多次),因此它是段落中出现频率最高的非禁用词。并且尽管 "hit" 出现的次数更多,但它不能作为答案,因为它是禁用词。标点符号会被忽略(即使它们紧挨着单词,如 "ball,"),,返回出现频率最高的非禁用词。"hit" 出现了 3 次,但它是禁用词。请注意,段落中的单词不区分大小写,和一个表示禁用词的字符串数组。至少存在一个非禁用词,且答案。819. 最常见的单词。原创 2024-09-27 16:48:28 · 92 阅读 · 0 评论 -
500. 键盘行 哈希表 力扣 Python 难度指数:3
同一行的字母打印出来的单词。原创 2024-09-27 13:37:01 · 128 阅读 · 0 评论 -
21. 合并两个有序链表 复杂一点的递归 python
新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。原创 2024-09-26 09:22:36 · 183 阅读 · 0 评论 -
LCR 123. 图书整理 简单链表递归 python
书店店员有一张链表形式的书单,每个节点代表一本书,节点中的值表示书的编号。为更方便整理书架,店员需要将书单倒过来排列,就可以从最后一本书开始整理,逐一将书放回到书架上。请倒序返回这个书单链表。原创 2024-09-24 09:05:38 · 233 阅读 · 0 评论 -
231. 2 的幂 简单递归 python除法的类型
请你判断该整数是否是 2 的幂次方。原创 2024-09-24 08:56:42 · 212 阅读 · 0 评论 -
2073. 买票需要的时间 简单模拟
位置 0 的人成功买到 5 张票,用掉 4 + 1 + 1 + 1 + 1 = 8 秒。- 第一轮,队伍中的每个人都买到一张票,队伍变为 [4, 0, 0, 0]。- 第二轮,队伍中的每个都又都买到一张票,队伍变为 [0, 1, 0]。- 第一轮,队伍中的每个人都买到一张票,队伍变为 [1, 2, 1]。位置 2 的人成功买到 2 张票,用掉 3 + 3 = 6 秒。如果一个人没有剩下需要买的票,那他将会。- 接下来的 4 轮,只有位置 0 的人在买票。开始)的人完成买票需要的时间(以秒为单位)。原创 2024-09-23 07:35:33 · 339 阅读 · 0 评论 -
面试题 02.07. 链表相交 双指针
从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。在 B 中,相交节点前有 1 个节点。相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。原创 2024-09-22 13:41:11 · 360 阅读 · 0 评论 -
面试题 01.06. 字符串压缩 双指针
若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。要先判断需不需要压缩成数字。原创 2024-09-21 08:27:57 · 154 阅读 · 0 评论 -
922. 按奇偶排序数组 II 双指针 力扣
左右指针0和n-1,左指针一次前进2格,永远在偶数位,右指针一次后退2格,永远在奇数位。[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。任何满足上述条件的数组作为答案。对数组进行排序,以便当。给定一个非负整数数组。原创 2024-09-20 20:58:09 · 345 阅读 · 0 评论 -
905. 按奇偶排序数组 双指针
4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。905. 按奇偶排序数组。原创 2024-09-20 20:19:15 · 120 阅读 · 0 评论 -
696. 计数二进制子串 脑筋急转弯
6 个子串满足具有相同数量的连续 1 和 0 :"0011"、"01"、"1100"、"10"、"0011" 和 "01"。有 4 个子串:"10"、"01"、"10"、"01" ,具有相同数量的连续 1 和 0。另外,"00110011" 不是有效的子串,因为所有的 0(还有 1 )没有组合在一起。的非空(连续)子字符串的数量,并且这些子字符串中的所有。注意,一些重复出现的子串(不同位置)要统计它们出现的次数。重复出现(不同位置)的子串也要统计它们出现的次数。,统计并返回具有相同数量。原创 2024-09-20 20:09:57 · 282 阅读 · 0 评论 -
力扣 短串匹配长串 python 双指针
"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。原创 2024-09-20 19:31:07 · 327 阅读 · 0 评论 -
1089. 复写零 力扣 python 双指针 for循环作用域
调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4],请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。调用函数后,输入的数组将被修改为:[1,2,3]进行上述修改,不要从函数返回任何东西。给你一个长度固定的整数数组。原创 2024-09-20 19:04:34 · 218 阅读 · 0 评论 -
LCP 18. 早餐组合 双指针 排序求组合
解释:小扣有 8 种购买方案,所选主食与所选饮料在数组中对应的下标分别是: 第 1 种方案:staple[0] + drinks[2] = 2 + 5 = 7;第 5 种方案:staple[1] + drinks[3] = 1 + 1 = 2;解释:小扣有 6 种购买方案,所选主食与所选饮料在数组中对应的下标分别是: 第 1 种方案:staple[0] + drinks[0] = 10 + 5 = 15;第 6 种方案:staple[2] + drinks[2] = 5 + 2 = 7。原创 2024-09-20 12:42:48 · 696 阅读 · 0 评论 -
1332. 删除回文子序列 脑筋急转弯
子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。返回删除给定字符串中所有字符(字符串为空)的最小删除次数。先删除回文子序列 "baab",然后再删除 "b"。先删除回文子序列 "a",然后再删除 "bb"。字符串本身就是回文序列,只需要删除一次。每一次删除操作都可以从。原创 2024-09-20 12:39:08 · 200 阅读 · 0 评论 -
680. 验证回文串 II 力扣 双指针 python
如果字符串不是回文,则使用双指针法从两端向中间遍历字符串。是否本身就是回文字符串,如果是,则直接返回。是否能成为回文字符串:如果能,返回。你可以删除字符 'c'。可以从中删除一个字符。原创 2024-09-19 22:46:07 · 290 阅读 · 0 评论 -
2108. 找出数组中的第一个回文字符串 双指针 python
的定义为:如果一个字符串正着读和反着读一样,那么该字符串就是一个。注意,"racecar" 也是回文字符串,但它不是第一个。第一个也是唯一一个回文字符串是 "racecar"。如果不存在满足要求的字符串,返回一个。2108. 找出数组中的第一个回文字符串。不存在回文字符串,所以返回一个空字符串。第一个回文字符串是 "ada"。,找出并返回数组中的。原创 2024-09-19 21:54:39 · 212 阅读 · 0 评论 -
1768. 交替合并字符串 力扣 双指针
开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。注意,word2 比 word1 长,"rs" 需要追加到合并后字符串的末尾。注意,word1 比 word2 长,"cd" 需要追加到合并后字符串的末尾。合并后: a p b q r s。合并后: a p b q c d。合并后: a p b q c r。1768. 交替合并字符串。原创 2024-09-19 21:39:18 · 198 阅读 · 0 评论 -
917. 仅仅反转字母 双指针 ‘A‘ <= i <= ‘z‘的区分
虽然这种方式在一些其他编程语言中可能可行,但在 Python 中,这样的表达式会按照从左到右的顺序分别判断。的布尔值结果,然后再对这两个布尔值进行比较,而不是像预期的那样判断字符是否在字母范围内。这样的内置方法来正确判断一个字符是否为字母。在 Python 中不能使用。来判断一个字符是不是字母。,这两个条件分别会产生。,从而产生错误的判断。原创 2024-09-19 21:32:42 · 405 阅读 · 0 评论 -
662. 二叉树最大宽度 BFS 力扣
被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,两端点间会出现一些延伸到这一层的。最大宽度出现在树的第 4 层,宽度为 7 (6,null,null,null,null,null,7)。最大宽度出现在树的第 3 层,宽度为 4 (5,3,null,9)。最大宽度出现在树的第 2 层,宽度为 2 (3,2)。题目数据保证答案将会在。662. 二叉树最大宽度。给你一棵二叉树的根节点。原创 2024-09-18 21:56:36 · 548 阅读 · 0 评论 -
561. 数组拆分 递归思想 数学规律 python 力扣
这里简要证明一下:如nums = [1,4,3,2],如果我们想舍去一个元素让剩下的元素最大,我们舍弃谁呢?显然是不能的,因为题意取的是一对数里面最小的元素,而1,2已经是最小的数。用递归的思想来解释,我们为了把1舍弃就必须找一个元素给他‘陪葬’,这个元素最好是比1大一点点的那个数,这样才能保持剩余的元素最大。最优的分法为 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2 + 6 = 9。,你的任务是将这些数分成。原创 2024-09-10 09:02:29 · 442 阅读 · 0 评论 -
2516. 每种字符至少取 K 个 滑动窗口 正难则反
r为右指针,l为左指针,当r指针右滑不满足条件时,则一直滑动左指针直到满足条件为止。下面的代码在第二个for循环是已经把不满足答案的给舍去了,所以下面的while循环一定能够找到满足num[ord(s[r])-97]原创 2024-09-10 08:44:30 · 447 阅读 · 0 评论 -
2287. 重排字符形成目标字符串 Python 力扣
2287. 重排字符形成目标字符串给你两个下标从开始的字符串s和target。你可以从s取出一些字符并将其重排,得到若干新的字符串。从s中取出字符并重新排列,返回可以形成target的副本数。2对于 "code" 的第 1 个副本,选取下标为 4 、5 、6 和 7 的字符。对于 "code" 的第 2 个副本,选取下标为 17 、18 、19 和 20 的字符。形成的字符串分别是 "ecod" 和 "code" ,都可以重排为 "code"。原创 2024-09-07 16:07:01 · 455 阅读 · 0 评论 -
442. 数组中重复的数据
但是改数组的第一个值是,就可能把其他地方的值给改变了。如果我们用取模运算的话就可以实现对后面数组中数字的余数不改变,但是数值会改变。如果出现两次4,数组就会加两次4.最后如果数组中有>2n的值出现是,就说明该数字出现了两次。对于第一个元素4,---> nums[4%n-1]=num[4%n-1]+n。为什么要%n,这样下一次对原数组操作时,取余就可以得到原来的值。且仅使用常量额外空间,可以考虑就在原数组上面改动。要保证数组的下标可以一一对应起来。的整数,并以数组形式返回。原创 2024-08-24 15:24:42 · 167 阅读 · 0 评论 -
1143. 最长公共子序列(详细版)
给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。3最长公共子序列是 "ace" ,它的长度为 3。3最长公共子序列是 "abc" ,它的长度为 3。0两个字符串没有公共子序列,返回 0。原创 2024-07-28 07:26:34 · 912 阅读 · 0 评论 -
dp有时候就是找规律 343. 整数拆分 python 力扣
,并使这些整数的乘积最大化。你可以获得的最大乘积。原创 2024-07-24 00:39:38 · 514 阅读 · 1 评论 -
152. 乘积最大子数组 python 7行代码
152. 乘积最大子数组已解答中等相关标签相关企业给你一个整数数组nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个整数。6子数组 [2,3] 有最大乘积 6。0结果不能为 2, 因为 [-2,-1] 不是子数组。本质是空间换时间+贪心。原创 2024-07-19 00:17:15 · 292 阅读 · 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 · 555 阅读 · 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 · 463 阅读 · 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 · 598 阅读 · 0 评论 -
1685. 有序数组中差绝对值之和
给你一个有序整数数组nums。请你建立并返回一个整数数组result,它跟nums长度相同,且result[i]等于nums[i]与数组中所有其他元素差的绝对值之和。换句话说,result[i]等于,其中且j!= i(下标从 0 开始)。[4,3,5]假设数组下标从 0 开始,那么。原创 2024-06-03 19:52:52 · 288 阅读 · 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 · 486 阅读 · 0 评论 -
面试题 17.05. 字母与数字(前缀和)
将数字变成1,字母变成-1,题目就变成了,给你一个nums=[1,-1,1,1,1,1,-1,-1.....],然后让你求最长等于0的子数组(子数组一定是连续的),这个时候就可以使用前缀和。记录出错==================================================================’中出现过,则计算当前索引与之前出现的索引的差值,即当前子数组的长度。给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。,表示最长子数组的长度;原创 2024-06-01 11:05:11 · 690 阅读 · 0 评论 -
2730. 找到最长的半重复子字符串(c++,滑动窗口)
所谓半重复子字符串是指字符串中某个子串,其中相邻的两个字符相同,但不要求全部字符都相同。算法采用遍历字符串的方式,通过维护两个指针(preLeft和left)来记录重复字符的位置,并动态更新最长半重复子字符串的长度。最长半重复子字符串是 "5223" ,子字符串从 i = 0 开始,在 j = 3 处结束。最长半重复子字符串是 "11" ,子字符串从 i = 0 开始,在 j = 1 处结束。中至多有一对相邻字符是相等的,那么称这个字符串。s 就是一个半重复字符串,所以答案为 4。原创 2024-05-25 17:08:53 · 219 阅读 · 0 评论 -
1695. 删除子数组的最大得分(C++,滑动窗口)
这段代码使用了滑动窗口(双指针)的方法来动态维护一个不包含重复元素的子数组,并实时更新子数组的和。主要思想是,用r指针扩展窗口并添加新元素,同时更新窗口的和;当窗口内出现重复元素时,移动l指针缩小窗口,直到窗口内所有元素都是唯一的。在此过程中,不断更新并比较最长子数组的和,最终返回最大的和作为结果。最优子数组是 [5,2,1] 或 [1,2,5]的一个连续子序列,即如果它等于。最优子数组是 [2,4,5,6],请你从中删除一个含有。原创 2024-05-25 16:54:46 · 238 阅读 · 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 · 277 阅读 · 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 · 187 阅读 · 0 评论 -
567. 字符串的排列(c++)滑动窗口
如果字符串的长度相等但哈希表不相等,则使用滑动窗口技术来检查排列。被初始化为大小为26,所有元素的初始值都为0。这些向量用于计算字符串。:在计算出现次数后,代码比较了两个哈希表。如果它们相等,那么意味着。如果它们在任何时候相等,函数返回 true。的长度,则函数返回 false。s2 包含 s1 的排列之一 ("ba").的排列,因此函数返回 true。,更新窗口的哈希表并将其与。计算每个字符的出现次数。中每个字符的出现次数。原创 2024-05-24 09:14:30 · 337 阅读 · 0 评论 -
C++今天长见识了(一个vector等于另外一个vector)
这种初始化赋值应该多学学。原创 2024-05-23 23:42:15 · 226 阅读 · 0 评论