- 博客(22)
- 收藏
- 关注
原创 力扣刷题-类似买卖股票题目一次遍历实现
求出当前线段的奖品数,然后更新前i个位置线段为k的最大奖品数,俩个线段的最大奖品数为当前奖品数加left之前线段最大奖品数。这道题需要用前缀和,定义一个数组presum存储前缀和,因为两个数组的最大值,所以应该从满足两个数组长度的地方开始遍历,第一种情况假设first子数组在前,second子数组在后,每次遍历就要更新最大的first数组,然后求另外一个数组和,最后更新maxsum,第二种情况,两数组交换,每次更新最大的second数组,求first数组和,更新maxsum。注意,两个线段可能会有相交。
2025-11-09 13:59:20
838
原创 力扣刷题-借助哈希完成一次遍历
这道题目先借用集合的性质,集合中元素不重复,所以循环遍历数组,每遇到一个单词就把单词这个字符串转化为集合,这样可以去除相同的字符,然后把这个去重的字符串排序,需要先转化为列表排序然后再转为字符串,然后查该字符串是否存在与哈希中,如果有,就加上这个次数,最后更新哈希,即次数加一。这道题目,需要用哈希,来存储出现次数,循环每遇到一个元素,就把该元素除余24的数保存到变量t中,然后在哈希中找是否存在与t相加为24的倍数的数,如果有,就加上这个数的出现次数,最后更新哈希,把t放进哈希并次数加一。
2025-11-09 12:39:30
524
原创 力扣刷题-借助默认字典来一次遍历完成
这道题也需要借用默认字典,字典中不存在时,默认为空数组。字典的键存储的是坐标中的y,字典的值存储的是一个数组,这数组中为纵坐标相等的所有x,然后理解题目,怎么样可以满足梯形呢?需要两个不同的y,这两个y都要有任意的两个x,即y1有两个任意的x生成(x1,y1)(x2,y1),y2生成两个(x1,y2)(x2,y2)这样生成的这四个坐标就可以满足梯形。在健为y1,y2的字典中,对应的值为数组,数组中任意选择两个x,情况有n*(n-1)//2种,n是健为y1或者y2对应的x数组的长度。3623统计梯形的数目。
2025-11-08 14:27:25
549
原创 力扣刷题-借助哈希一次遍历实现
这道题需要借助哈希,保存元素出现次数,没遇到一个元素,就判断目标减去该元素的值,是否在哈希中,如果不在,就让出现次数循环元素的出现次数加一,如果在哈希中,要判断该值出现次数是否不为0,如果为0,就将循环元素的出现次数加一,如果不是0,就把他们两个以数组形式放进结果数组中,并且该值出现次数减一。设计一个算法,找出数组中两数之和为指定值的所有整数对。的定义是:既不是原始特殊数字之一,也不是表示元素和的那个数。特殊数字可以是 2 和 3,因此和为 5,异常值为 10。,特殊数字、和 以及 异常值 的下标必须。
2025-11-05 21:00:57
931
原创 力扣刷题-单次遍历求数组元素的最大差(股票题)
这道题,单词循环可以完成,每遇到一个元素就求当前元素之前包含此元素的最小值,然后再更新最大利润,以前的利润和当前股票价格减去之前最小的价格(即当前利润)哪个大。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。这道题跟买卖股票题目思路一模一样,不再多说。2016增量元素之间的最大差值。买入这只股票,并选择在。如果不存在满足要求的。121买卖股票的最佳时机。
2025-11-05 16:00:09
488
原创 力扣刷题-1679K和数对的最大数目(哈希)
这道题目,需要用哈希,用哈希来表达元素出现的次数,循环判断每个元素,如果(k-元素)的值出现的次数大于0,意味着遍历过的数组中有元素满足与当前元素和为K,那么操作数次数要加一,并且该元素出现的次数减一,如果次数为0,就把该元素放进哈希,并且次数加一。每一步操作中,你需要从数组中选出和为。返回你可以对数组执行的最大操作数。的两个整数,并将它们移出数组。
2025-11-03 16:22:25
390
原创 力扣刷题-用字典减少循环次数
这道题,先定义一个字典,字典的键为数组的元素,字典的值为数组的索引,循环,每遇到一个元素就判断当前元素是否存在于字典中,如果在的话,那么索引相减的绝对值判断是否满足题目条件,如果满足,返回true,在循环结束,如果i遍历到最后也没有满足条件,那就是没有满足条件的元素对。这道题,先排序,因为求的是最大和,再定义一个字典,字典的键放的是元素的数位上最大的数字,字典的值放的是索引,循环判断,如果满足当前的元素数位上最大的数字存在字典中,那就意味着数组中有这样的数,求这两数之和,更新最大数和。
2025-11-03 16:16:28
1076
原创 力扣刷题-借哈希来减少循环次数
这道题用这种算法有点难,不好求,cnt哈希的键保存的是数字的第一个数,值保存的是第一个数出现的次数,循环数组,遇到一个数,就求它的最后一位的数字,然后循环遍历cnt,判断cnt中的键和这个数字的最后一位数字是否满足互为质数,满足的话,就加数的第一个数字出现的次数,即cnt的值,循环之后,要更新cnt,把这个数的第一个数字保存在cnt中,并且次数加一。,如果不存在大于 1 的整数可以整除它们,则认为。整除的歌曲对的数量。1010总持续时间可被60整除的歌曲。,就可以认为这是一组。2478美丽下标对的数目。
2025-10-30 22:11:52
714
原创 力扣刷题-单序列同向双指针1
这道题跟上面的题目差不多,但是更难点,思路是差不多的,首先要确定数组前缀是满足题目要求的严格递增,初始化数组的个数,因为left+1之前的一定是严格递增的,所以有left+2个(空的也算)数组可删,满足严格递增,所以初始化个数为left+2,如果left一直移动到最后,就意味着数组本来就有序,所以由数学规律可知,可以求出所有数组组合数。的一个子数组满足:移除这个子数组后剩余元素。是一个移除递增子数组,因为移除该子数组后,一个子数组指的是原数组中连续的一个子序列。,剩余元素为空的数组也视为是递增的。
2025-10-29 20:58:43
838
原创 力扣刷题-单序列相向双指针5
这道题目,首先要明确,怎么确定三角形有效,三个边,一定有一个最大的边,最大边一定小于其他两边之和。所以代码思路应该是,先排序数组,外循环i从末尾开始,i的位置从最大的开始,充当三角形中最大的边,left从0开始,right从i-1开始,如果满足left元素加right元素大于最大边的话,那么left+1,left+2位置元素等等,和right元素相加也都大于最大边,所以count应该加right- left,然后right可以移动下一个啦,如果小于不满足的话,left加一。给定一个包含非负整数的数组。
2025-10-27 22:27:26
662
原创 力扣刷题-单序列相向双指针4
这道题,首先要排序数组,前面的题也是,第一步都要排序数组,这道题还需要双重循环,外循环定义i,内循环,跟之前思路一样,不过,left要从i+1开始,right还是一样的,如果三数之和等于0,那就将这三个数以数组形式加入数组,最后形成二维数组,如果小于0,那就left加一,如果大于0,那就right减一。,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。数对满足以下情况,则认为它是一个。答案中不可以包含重复的三元组。中选出三个整数,使它们的和与。,判断是否存在三元组。
2025-10-26 17:16:39
542
原创 力扣刷题-单序列相向双指针3
这道题,首先要对数组进行排序,然后设置两个变量,分别从left和right开始移动,当left元素加right元素之和大于等目标时,right减一,当小于目标时,count要加right- left,因为当小于目标时,该区间的元素与left元素相加都满足要求,然后不要忘了让left加一。是一个有序整数列表中处于中间位置的值。为数组的中位数,只要满足下述两个前提之一,就可以判定。你所设计的解决方案必须只使用常量级的额外空间。,请你从数组中找出满足相加之和等于目标数。的形式返回这两个整数的下标。
2025-10-24 15:22:54
981
原创 力扣刷题-单序列相向双指针2
这道题的思路,是设置两个变量,当作指针,分别为left,right,在数组的左右两端,外循环判断left要小于right,并且left对应字符要等于right对应字符,用变量c保存当前的字符,内循环判断left对应元素是否为c,是的话,left加一,内循环判断right对应元素是否为c,是的话,right减一,最后返回剩余的长度即可。- 选择前缀 "c" 和后缀 "c" 并删除它们,得到 s = "abaaba"。- 选择前缀 "a" 和后缀 "a" 并删除它们,得到 s = ""。
2025-10-23 20:12:46
700
原创 力扣刷题-单序列相向双指针1
这道题用了刷相向双指针,left从数组0开始向右移动,right从数组末尾开始向中间移动,对调left和right对应位置的元素,然后left加一,right减一。这道题,要设置top,和under两个变量,当作指针,相向移动,道理很简单。这道题不难,主要是知道str.isalnum()这个函数是判断str字符串中是否有非字母数字的字符。这道题很简单,需要注意的是,先把字符串转变成列表类型去做,做完之后,要再转成字符串。,仅反转字符串中的所有元音字母,并返回结果字符串。你的任务是垂直翻转子矩阵的行顺序。
2025-10-22 15:14:39
653
原创 力扣刷题-恰好型滑动窗口1
这道题也是恰好型滑动窗口,转变成越长越合法的滑动窗口,定义一个函数,该函数求的是奇数个数大于等于n的子数组个数,函数思路为,每往右移动一个元素,就判断该元素是否为奇数,是的话,奇数个数加一,然后循环判断count是否大于等于n,如果大于等于,就left右移动,移动之前,要判断left对应位置元素是否是奇数,是的话,count减一,left加一,当内循环结束时,窗口是不满足条件的窗口,但是该窗口前面的left个窗口是满足的,所以ans+=left。的某个子数组中不同整数的个数恰好为。是数组的一段连续部分。
2025-10-21 14:40:56
547
原创 力扣刷题-不定长滑动窗口6(求子数组个数越长越合法)
思路是这样的,每往右移动一个元素,就让元素的出现次数加一,循环判断哈希长度(即子数组不同元素个数)是否等于数组不同元素的个数,如果相等,left要右移动,移动之前,left对应位置的元素出现次数减一,一定不要忘了判断left元素出现次数减一之后,left元素在窗口中的次数是否减为0,如果是0,就直接在哈希中删掉该元素,这样哈希的长度会减一,就不满足循环条件,当退出循环时,窗口是不满足条件的,但是这个窗口之前的窗口是满足的,且有left个,所以ans+=left。的所有子字符串中,请你统计并返回。
2025-10-20 15:36:43
872
原创 力扣刷题-不定长滑动窗口5-求子数组个数(越短越合法)
这道题用了滑动窗口求子数组个数,每往右移动一个元素,就加这个元素,然后累计和乘以窗口长度,然后循环判断累计和乘以窗口长度是否大于等于k,如果成立,累计和要减去left对应位置的元素,然后left加一,然后更新累计和乘以窗口长度,最后记得满足条件的子数组数目为窗口长度的累计和。这道题主要在于思路捋清楚,满足两者条件之一就可以,所以相当于求满足字符0的数量最多为k的情况加上满足字符1的数量最多为k的情况,减去同时满足这两种情况。大小为 2 的不间断子数组:[5,4], [4,2], [2,4]。
2025-10-19 17:47:09
237
原创 力扣刷题-不定长滑动窗口4(最后一道为求最短的题目)
这道题需要转化一下思路,由求两侧变成求中间的窗口,中间字符窗口需要满足每个字符的出现次数要最多出现(总数-k)次,首先需要求出字符串中每个字符总共出现的次数,然后要定义字典,记录关键字为字符,值为窗口中字符最多出现的次数,这些准备好之后,思路是这样的,每往右移动一个元素,该元素出现次数加一,然后循环判断a,b,c这三个元素的出现次数是否超过(总数-k)次,如果超过,left要右移,移动之前,left对应位置的元素次数要减一,最后left加一。4 是数组中最高频元素,频数是 3。在一步操作中,你可以选择。
2025-10-18 22:29:26
498
原创 力扣刷题-不定长滑动窗口3
这道题,主要难在解读题目的意思,这道题需要先对数组进行排序,排序后很清晰了,题目相当于求满足max-min<=2*k最长子数组,这种典型的滑动窗口题目,每往右移动一个元素,就要循环判断,max-min是否大于2*k,如果满足,left就要加一。这道题要定义一个变量,记录两个连续相等字符串的个数,往右移动一个字符,就要判断该字符是否跟相邻的相同,如果相同,变量加一,然后循环判断,如果个数大于一,就判断left对应位置元素是否为重复字符,更新变量,然后left加一。数组 nums 的美丽值是 4(整个数组)。
2025-10-17 11:42:18
506
原创 力扣刷题-不定长滑动窗口2
这道题稍微难点,主要是绕一下,这道题要写一个函数,函数要求不超过k次情况下,最大连续目标字符的数目,这个函数跟我们平常写的滑动窗口思路一样,定义一个变量记录不是目标字符的累计数量,只要往右移动一个元素就判断一下,判断是否不是目标字符,如果成立,就加一,然后循环判断,这个数是否大于k,如果成立,left要往右移动,移动之前,先判断left位置对应的值是否不是目标字符,要对累积量进行更新,然后再left加一。#用字典记录,水果的类型和该类型放入篮子的索引。指的是一个数组中一段连续非空的元素序列。
2025-10-16 15:07:58
247
原创 力扣刷题-不定长滑动窗口1
这道题,要用哈希,来存储字符出现的次数,然后用滑动窗口,先把右端假装放进滑动窗口,让哈希加一,然后循环判断左端的字符的哈希是否大于一,大于一的话,left要加一,别忘了,left对应的字符哈希要减一,因为他已经不在滑动窗口了。这道题,跟上道题差不多,这道题,要设置一个变量,记录0的个数,假装把right放进来,记得判断0的个数是否要加,然后循环判断0的个数,如果大于1,如果left是0,0个数要减一!请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。,请你找出其中不含有重复字符的。
2025-10-15 20:49:28
823
原创 力扣刷题-定长滑动窗口题1
这道题关于定长滑动窗口,右端移动一个元素时,判断是否时元音字母,是的话累计总和加一,左端移动时,判断是否是元音字母是的话,累计总和减一。这道题定长滑动窗口,右端如果是黑色,总和减一,左端如果是黑色,总和加一。的单个子字符串中可能包含的最大元音字母数。每一次操作中,你可以选择一个白色块将它。的连续子数组,并输出该最大平均数。2379得到K个黑色涂块的最少涂色数。1456定长子串中元音的最大数目。的答案都将被视为正确答案。个元素组成的整数数组。643子数组最大平均数。请你找出平均数最大且。分别表示白色和黑色。
2025-10-14 13:22:01
297
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅