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的速度移动,两个节点相遇的时候,就是入口位置啦