- 博客(6)
- 收藏
- 关注
原创 Leetcode题解(hot100)
0,就取出k-1位置字符,以及k+len-1位置字符。思路:使用max来存最长子串的长度并初始化为0,使用HashSet存滑动窗口内的值,然后使用两个指针,快慢指针,快指针访问字符x时,先判断是否在HahSet里面(o(1)),不在的话就存入x然后继续移动快指针,如果存在导致重复的话,先记录当前滑动窗口长度,和最长长度进行比较是否要覆盖max,然后移动慢指针,直到直到移动到字符x,记住!移动慢指针的同时,根据慢指针当前访问的值y,要在HashSet里面进行移除。这篇分享的是考察滑动窗口的算法。
2025-09-16 17:48:48
332
原创 Leetcode题解(hot100)
判断逻辑是:把双指针表示的当前容量先记录下来,然后移动较矮的边缘指针将问题规模变小化(移动较高指针那么容量只会比刚刚记录的当前容量要更小,移动较矮的有可能会更大,也就是去掉矮指针使得问题规变小),记录下当前容量的目的是用作与最大容量进行比较和更新最大容量。思路:使用双向双指针,初始化指向两端。把双指针指向的值求和与target进行比较,如果比target值大,那么右指针就要左移(因为左指针右移之后两数之和只会更加大,也就是说只有左指针和中间的数之后才有可能等于target),然后问题规模就变小了。
2025-09-16 13:54:34
168
原创 Leetcode题解(hot100)
第二件事情是如果判断不存在x-1,说明x是当前数字串的最长长度的起点,使用内层循环从x开始遍历(利用HashSet判断x+1是否存在的这个逻辑),直到跳出内层循环,判断的最后一个数字如果是y,那么y-1就是当前数字串的终点,相减即是数字串的长度,最后与maxlength比较是否覆盖即可。算法思路:使用hashmap,因为一组字母异位词排序后的结果都是统一的,我们把这个统一的值作为该组字母异位词的“基”,并且把这个“基”作为hashmap的key,把所有字母异位词的集合作为hashmap的value。
2025-09-16 13:44:16
706
原创 Leetcode题解(数组与矩阵篇)
那么列表K最多应该有n减1个不同的整数,而且列表K最大的是你n减1,其中一种而且一定正确的排列方式就是,第一个数永远是1,第二个数从剩下的元素里面找并且与前面一个元素差值是n减1,第三个从剩下的元素里面找并且与前面一个元素差值是n减2,以此类推。K只有5个不同的整数怎么办,其实很简单,先从小到大把9个元素排列好,然后只操作1到6的这6个元素即可,后面的不变,因为后面的差值都是1.。1到6的6个正整数,那么列表K最多应该有5个不同的整数,而且最大的那个是5(6减1),比如这样排列:1 6 2 5 3 4。
2025-09-09 11:59:04
241
原创 Leetcode题解(数组与矩阵篇)
算法思路:这里我们运用了有序数组的一个规律特性,就是大家有没有发现,对于这种有序矩阵的所有子矩阵都有一个特点(包括它本身):以最左下角的元素为轴,比最左下角的元素还小的,那么肯定比这一行都小,那么后续就可以删除掉这一行继续利用这一特性进行比较;要知道题目给出的是一个有序矩阵,它的每一行的最左边的元素一定是这一行最小的元素,因此我们现在可以把每一行最左边的元素当成可能要弹出的候选元素。2.错误点元素比本该是元素小,且本该是元素位移到下一个位置,那么当前错误点元素是重复元素,且需要继续往后找丢失元素。
2025-08-21 15:21:03
1360
原创 leetcode题解(数组与矩阵篇)
算法思路:直接按照新行列数来重塑新的数组(双for循环),在重塑新数组的过程中按个访问原数组元素,每从原数组中取出一个数就存到新数组中(注意原数组访问的过程中换行取数的条件判断),这里我一直报错,因为忽略了重塑操作之前原数组和新数组大小不符时返回原数组的条件判断。算法思路:采用双指针:指针一和指针二,初试都指向数组[0]位置,指针二从前往后找非零元素,把每一个非零元素都放到左指针所指向的位置, 指针不断后移,直到最后遍历完数组。最后,指针一左边都是非零元素,只需要把其后面的下标元素都置零即可。
2025-07-03 22:22:22
668
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅