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

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

        关于这一题,我感觉其中的要点依然是创建一个虚拟头节点,然后可以统一操作。基础部分就是简单的链表节点交换。

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

        这个一开始自己写,很迷茫,按照一般的常规写,会在这种情况

这两种情况下陷入对于边界情况的处理的困境。

        然而发现,在使用快慢指针结合虚拟头节点的方式会事半功倍。这才是这个题的关键。

面试题 02.07. 链表相交

        这个的核心是“尾端对齐”。即,把最长的链表的当前指针指向从一个节点,这个节点的位置条件是:两个链表分别同步从后向前数,短链表到head的时候,当前指针所在的位置。这样就把一般手段里的笨拙的双层遍历变成了单次遍历,也就是从O(n^2)到O(n)

142.环形链表II 

这个环形链表的核心有两个。

一个是能想到我们日常跑步被人套一圈的经历:如果有一个人速度快一些,另一个人速度慢一些,那么如果操场是一个环形,那么就一定会相遇。这里其实蕴含了两个要点,一个是操场的环形,另一个是跑步的两个人的过程是连续的,这个条件对应到我们数字的维度,我认为就是跑的快的比跑的慢的仅快一个单位,这样才有数字维度的连续性。

第二个核心点是通过数学推导,可以发现

这样就可以方便简洁的写出解决方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值