当前位置:首页|资讯

刷!把leetcode都刷了! 的第四天

作者:0o抱抱o0发布时间:2024-10-21

跟着代码随想录刷题的第四天~

第一题:24 Swap Nodes in Pairs

嘻~这个我之前做过~没看答案就做出来啦~

第二题:19 Remove Nth Node From End of List

wow~这个我也一下子就想出来了(就只看了一下提示)~针不戳~还是得清晨刷题啊~脑子蛮清晰的感觉

第三题:160 Intersection of Two Linked Lists

这个这个还挺难想的(还是个easy题o(╥﹏╥)o)~看了解析发现关键是:正着想不出来~要学者反着想~如果从头看的话不太好找规律,但是从尾巴开始看,就能看出解析上的思路

计算两个链表长度,相减,使两个链表都从倒数第n个开始往前走,如果相交就返回相交节点,反之return None

第四题:

这个这个没相处什么好思路,先看我力大砖飞

let me see see解析

沃日~怪不得我想不出来~这太难了

第一点:快指针一定和慢指针相遇,不会跨过去,因为快指针相对于慢指针只快一个

第二点:慢指针一定在自己的第一圈和快指针相遇,因为慢指针走完一圈,快指针一定走完两圈,这一定相遇(这个地方视频讲的更清楚一点)

第三点:快指针走过的距离是慢指针的两倍

假设head到圈起始点的距离是x,慢指针在相遇时在圈内走了y,相遇点距离圈起始点距离是z

慢指针走了x+y

快指针走了x+n(y+z)+y,n是快指针走的圈数

2(x+y) = x+n(y+z)+y

x = n(y-z)-y

x = (n-1)(y-z) + z

之后我们就得到了一个关键等式

这个等式并不是说z一定等于x,而是从相遇点出发一个指针,和在头结点出发一个指针,一定在环的入口相遇,这个题就解出来了

快慢指针是先走再判断~这样loop好写一点额


上班!


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1