嘻~这个我之前做过~没看答案就做出来啦~
wow~这个我也一下子就想出来了(就只看了一下提示)~针不戳~还是得清晨刷题啊~脑子蛮清晰的感觉
这个这个还挺难想的(还是个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好写一点额
上班!