链表反转

这类题型用递归是最容易想到的
在链表反转这道题中我觉得递归的终止条件是head.next.next==null,但是答案中的题解是head==null||head.next==null
还有一个有差别的地方就算将上面的条件保持一致,我return了head,答案return了一个cur(cur=reverseList(ListNode head))
我觉得我的想法没啥问题,暂时先把答案背下来吧,之后复刷的时候应该会有灵感
7.19
我在重新刷到这个题的时候,由于之前刷过,所以自然而然地想到了递归,但是递归还是需要想清楚是前序还是后序即在递归之前进行一些操作还是在递归之后。不难发现,反转链表的时候肯定是先递归到倒数第二个结点,然后将当前结点的next的next指针指向当前结点,然后让当前结点的next指向NULL

双指针题型

双指针的题型还是比较多的,也比较灵活多变,常见的题型有

  1. 快慢指针,删除链表倒数第k个结点,寻找有环链表的环的起点;
  2. 左右指针,寻找数组中两个元素的和等于目标值的元素;
  3. 滑动窗口,寻找和为目标值的子序列

但是,双指针不一定是这类问题的银弹,也有其他技巧
差分数组 适合在区间内频繁修改的场景
前缀和数组 也可以用来计算某个区间的值等于目标值
为什么放在一块儿说,因为通常看到能用差分数组和前缀和数组的题目时,不免会想到使用双指针,如果从一开始的方向就错了,那么后面的努力意义不大。


ChangZhu
8 声望1 粉丝

但将行好事,莫要问前程


« 上一篇
力扣栈相关
下一篇 »
二叉树相关