代码随想录04 | 24两两交换链表中的节点、19删除链表的倒数第N个节点、面试题0207链表相交以及142环形链表

1 两两交换链表中的节点

24两两交换链表中的节点

本题关键在于交换结点之后,原来的线就不存在,无法通过这根线找到下面的节点,具体如下图。

1.1迭代法

1.2 递归

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

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

双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。此时slow指向的是需要删除的节点。

3 链表相交

面试0207链表相交

swap()是C++自带函数,可以交换两个容器的内容。

另外,参考swap,这篇博客,自写swap要注意用指针或引用,因为在调用函数传入参数的时候会生成与原参数列表完全相同的临时参数参与函数的执行。并不会改变本身的值。

4 环形链表Ⅱ

142. 环形链表 II

快慢指针:关键在于理解快慢指针在圆中相遇之后,从相遇点和头节点同时出发,刚好会在循环入口处相遇。

快指针每次走两步,慢指针每次走一步:快指针相对于慢指针来说,每次走一步,也就是说必会相遇。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值