2024.03.24_学习日记

天气:晴
学习地点:学校
学习时长:5h

学习内容

  1. 双指针
    alt text
    alt text
    使用两个指针i和j表示当前考虑的子数组的左右边界。使用哈希表hashmap记录当前窗口内每种水果的数量。使用cnt记录当前窗口内包含的不同水果的种类数。当cnt超过2时,通过移动左指针i来缩小窗口,直到窗口内再次包含最多两种水果为止。在每一步中,如果当前窗口满足条件(即,最多包含两种水果),则更新最大子数组长度res。
  2. 双指针
    alt text
    alt text
    alt text
    通过维护两个指针来实现滑动窗口,其中 i 和 j 分别表示左右指针。在移动右指针的过程中,不断更新需要匹配的字符的哈希表 needMap 和需要匹配的字符数量 needCnt,并在满足条件时,尽可能地压缩左边界 i,以找到最小的满足条件的窗口,并更新结果字符串 res。
  3. 算法题
    alt text
    alt text
    纯coding,没什么技巧,要分清楚边界问题。
    alt text
    这是另一个螺旋数组的解法,只要求顺时针打印,通过四个循环遍历的方式,依次遍历了螺旋矩阵的上、右、下、左四个边界,每次遍历完一个边界后,更新相应的边界指针,并判断是否需要终止遍历。最终返回结果列表 res 即为螺旋遍历的顺序。
  4. 数组题总结
    数组题主要就是二分、双指针、滑动窗口。
  5. 翻转任意两个链表
    alt text
    alt text
  6. 快慢指针
    alt text
    快指针先走n+1步,因为快指针走到空,慢指针要走到删除位置的前一个。
  7. 链表相交
    alt text
    alt text
  8. 环形链表
    alt text
    数学方法,快慢指针然后都变成慢指针。