小记录4

70 阅读1分钟

24. 两两交换链表中的节点

重点是对于被交换的两个节点,一定都要存在,否则就没什么可交换的了,然后就是所谓交换实际上是把两个节点的前一个节点的next指向参与交换的第二个,然后再把第二个参与交换的node的next改成第一个参与交换的节点,所以这里其实可以发现的是第二个参与交换的节点的next引用已经丢失了,所以在交换之前就要用一个tmp存起来,然后在把它assign给第一个参与交换的node的next就行了

19.删除链表的倒数第N个节点

模拟这个过程,先要统计list的size,也就是有多少个节点,然后因为是删除,也就是改变被删除节点的前一个节点的next,让被删除节点失去引用,当然这里head前面也要有一个dummyNode来保证在我删除头节点的时候也是可以删除的,不必特殊处理。

 面试题 02.07. 链表相交

用map存一个list的所有节点,然后遍历另一个list找当前遍历到的节点是否已经被存储了即可

环形链表II

一道有难度的题目,重点在于找到入口,用两个指针分别从fast,slow相遇的位置开始出发以1的速度向前移动以及从head开始以1的速度移动,两个节点相遇的时候,就是入口位置啦