
leetcode学习合集
文章平均质量分 81
主要分享自己在leetcode中的的刷题思路总结以及搜罗到的一些更优解法
小鱼学习笔记
这个作者很懒,什么都没留下…
展开
-
2025.3.5学习笔记---链表
addAtIndex主要思路:首先判断index是否有效,如果无效直接return ,如果有效定义一个for循环,最大循环数小于index,在循环体内用curr=curr.next完成指针的移动,直到移到index(最后一次循环)退出循环后,令newNode.next = curr.next;cur是找不到上一个节点的,但是cur.next可以,所以我们首先来判断cur以及cur.next是否为空,不为空再判断cur.next.val是否等于目标值,如果相等,则令。,即完成头节点的删除操作。原创 2025-03-05 22:04:35 · 406 阅读 · 0 评论 -
3.28---双指针法及单调栈拓展
主体思路:先将这个数组排序,这样方便后续操作,然后用一个 map来存储信息,当键名为数组元素,对应的值有0和1,0表示该元素没有比它小的上一个元素,1表示有;判断思路是,先判断map中是否有和它重复的元素,重复则直接到下一次循环,不存储重复元素;如果没有重复元素,就判断它是否有比它小1的元素,如果有说明连续,就将值设置为1,并max作为计数器开始记录连续次数,如果没有比它小1的连续元素,说明连续断了,将其值设置为0表示不连续,然后将之前没断的max值赋值给list存储,重新清空max用于下一次连续的计数。原创 2025-03-28 21:34:08 · 951 阅读 · 0 评论 -
2025.3.9---链表题目
一开始的思路是,先反转链表,再按照给的n按顺序删除对应该点的位置,但是注意这里结束之后还要再把链表反转回去,感觉用双指针法的话有点太冗杂,所以采用递归法试试,在重写翻转链表方法时又出现问题,输出是空链表,对照了一下问题,发现在写reverse函数正确返回值是。然后看了代码随想录的解析,发现误区在于,我构想的移动是死移动,所以按照实例1来说直接在第一个节点就卡住了,但是正确的思路是就让快慢指针自己按照自己的速度移动,有环的话,它们总能在某一处相遇(问题是这个点不一定是入口,所以只能用来判断是否有环)原创 2025-03-09 21:18:51 · 733 阅读 · 0 评论 -
3.10学习笔记---哈希表题目:字母异位词
这道题的思路是:设置一个从字母“a”到字母“z”一一对应的哈希表(长度为26),遍历s字符串,每当扫出其中一个字母时,就在该字母(索引)对应的数组元素自增一(记录该字母在s字符串中出现的频次)。set 和multiset底层实现都是红黑树,红黑树的本质是平衡二叉查找树(头节点左侧都比它小,右侧都比它大),所以key是有序的,但也不能修改,只能增删;暴力解法就是两个for循环,一个正向外循环,一个正向内循环 ,遍历t找到s[i]就可以退出内循环,,外循环加一,直到全部找出。HashMap是基于哈希表实现的。原创 2025-03-11 10:37:40 · 322 阅读 · 0 评论 -
2025.3.13---哈希表:四数相加,赎金信,三数之和
该题的主要思路是:如果用四个for循环遍历的话时间复杂度会非常大,所以拆分一下,两个数组一起遍历。具体来说就是先遍历数组12,将12所有元素相加和sum1的情况以及出现的次数记录在map中;然后遍历数组34,也是计算34所有元素的相加和,找出有没有等于-sum1的情况(这样四个数组相加就等于0了),一旦找到一个情况,cnt就等于cnt+map.getValue(sum1)。原创 2025-03-16 21:00:17 · 857 阅读 · 0 评论 -
2025.3.12学习笔记---哈希表(数组拓展题目,快乐数)
一开始的思路是:先用nums1在nums2里面找交集,找完交集之后再和nuns1找交集。但是这样有个问题就是比如某一个数组1有重复的数字1,但另一个数组2只有一个1,那么在判断条件(2中是否包含1)就会一直成立,会重复添加,比如下面这个案例:所以这个思路也是不正确的,借鉴了一下官方解题思路,是使用了哈希表来记录某元素的出现次数,并把其对应关系写在map里面。一开始先找到短的那个数组,让短数组在长数组中找交集会更加快捷,所以判断数组长度,然后让nums1为短数组,nums2为长数组;原创 2025-03-12 19:10:09 · 362 阅读 · 0 评论 -
3.11学习笔记---哈希表(字母异位词拓展题和数组交集)
一、字母异位词分组哈希表加两个for暴力解法(但超出时间限制了,有没有友友帮忙看看哪里还可以优化或者有其他好的方案)主体思路是采用哈希表nums来记录每一个字符是否已被添加到List当中,已被添加的置1,没有置0。原创 2025-03-11 23:03:06 · 398 阅读 · 0 评论 -
3.19学习笔记---四数之和及字符串题目
主要思路:三数之和是放两个指针left,right然后再一次i遍历,所以我设计的四数之和是三个指针left,middle,right,然后两次遍历。先判断前面两个数之和sum1,再去找后面两个数之和有没有等于target-sum1的,有的话将这四个数放入一个list里,然后再判断结果集合res里面有没有这个list,有的话就不添加进res里。但是超出时间限制,算法还是需要再优化一下代码随想录里面的思路:和三数之和一样,只是多了一个for循环,然后剪枝条件不一样。原创 2025-03-19 22:28:59 · 374 阅读 · 0 评论 -
3.21---字符串题目(KMP算法)
注意substring函数左闭右开。原创 2025-03-24 11:03:50 · 934 阅读 · 0 评论