代码随想录37期|LeetCode 24. 两两交换链表中的节点,LeetCode 19.删除链表的倒数第N个节点,LeetCode 142.环形链表II

1.两两交换链表中的节点
易错点:根据运算规则,cur->next!=null要先写先判断,不然cur->nextr->next!=null先判断的话,会报空指针异常
写代码的时候还是把图画出来更不容易出错,你可以先写 cur->next = cur->next->next,但是一会发现,要操作第一个节点的时候已经丢失了第一个节点的地址,所以需要temp先储存第一个节点的地址,因为涉及到第三个节点,所以第三个节点也需要保存。
思考:为什么循环终止条件是且?想错了,while里面是循环条件

2.删除链表的倒数第N个节点
双指针的典型应用、虚拟头节点
要点:想改变某个节点,操作的一定是他前面的节点
怎么找到倒数呢,让快指针先走n+1步

3.环形链表II
一是判断是否有环,二是找到环的入口
快慢指针,如果不相遇说明是直线,如果相遇说明都进入了环内,快指针每次走两个节点,慢指针每次走一个节点,相对速度是一个节点,同向追击问题,他们两一定会相遇,而如果相对速度在两个节点,有可能会跳过不会相遇
另一个点,慢指针一定在没走完一圈之前就会与快指针相遇,为什么?因为他们俩的速度,满指针如果走完一圈,快指针必定走完两圈,快比慢多了一圈,相遇之前,慢指针不可能走完一圈

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值