代码随想录算法训练营第4天 | 24. 两两交换链表中的节点 19. 删除链表的倒数第 N 个结点 面试题 02.07. 链表相交 142. 环形链表 II

一、Leetcode 24. 两两交换链表中的节点

虽然原理和翻转链表一样,但是自己上来就写还是出现一堆错误:

  1. 检查cur->next和cur->next->next是否为空,用while而不是if;
  2. cur是偶数index节点的前一个结点;
  3. 最后返回dummyHead->next而不是head,因为head已经被交换掉了;
  4. 关于NULL和nullptr:c++中NULL为整数0,nullptr 为空指针常量,是指针类型;

二、Leetcode 19. 删除链表的倒数第 N 个结点

  1. 一开始看到这个题还在想要反转链表还是啥的,结果卡哥说用快慢指针就明白了。这个思路我找了一下前面讲的是:“双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。”那就对了,正常是要循环一次找总节点数,再一次找倒数第n个节点位置。这种情况可以用快慢指针。
  2. 另外就是n+1的问题,依然是因为slow需要指向倒数第n个的前一个节点。
  3. while(n–)是循环n次。

三、Leetcode 面试题 02.07. 链表相交

so easy! 由于没有什么技巧,码的很快一次AC。

四、Leetcode 142. 环形链表 II

卡哥讲的很精彩,代码不难没什么可注意的,主要是分析出原理。

你可能感兴趣的:(刷题,链表,算法,数据结构)