你變成我,我變成你,我們便相遇了。

2021-10-22 06:45:31 字數 1617 閱讀 2727

這是一道鍊錶的題,原題如下:

給定兩個(單向)鍊錶,判定它們是否相交並返回交點。請注意相交的定義基於節點的引用,而不是基於節點的值。換句話說,如果乙個鍊錶的第k個節點與另乙個鍊錶的第j個節點是同一節點(引用完全相同),則這兩個鍊錶相交。

輸入:intersectval = 8, lista = [4,1,8,4,5], listb = [5,0,1,8,4,5], skipa = 2, skipb = 3

輸出:reference of the node with value = 8

輸入解釋:相交節點的值為 8 (注意,如果兩個列表相交則不能為 0)。從各自的表頭開始算起,鍊錶 a 為 [4,1,8,4,5],鍊錶 b 為 [5,0,1,8,4,5]。在 a 中,相交節點前有 2 個節點;在 b 中,相交節點前有 3 個節點。

輸入:intersectval = 2, lista = [0,9,1,2,4], listb = [3,2,4], skipa = 3, skipb = 1

輸出:reference of the node with value = 2

輸入解釋:相交節點的值為 2 (注意,如果兩個列表相交則不能為 0)。從各自的表頭開始算起,鍊錶 a 為 [0,9,1,2,4],鍊錶 b 為 [3,2,4]。在 a 中,相交節點前有 3 個節點;在 b 中,相交節點前有 1 個節點。

輸入:intersectval = 0, lista = [2,6,4], listb = [1,5], skipa = 3, skipb = 2

輸出:null

輸入解釋:從各自的表頭開始算起,鍊錶 a 為 [2,6,4],鍊錶 b 為 [1,5]。由於這兩個鍊錶不相交,所以 intersectval 必須為 0,而 skipa 和 skipb 可以是任意值。

解釋:這兩個鍊錶不相交,因此返回 null。

如果兩個鍊錶沒有交點,返回null

在返回結果後,兩個鍊錶仍須保持原有的結構。

可假定整個鍊錶結構中沒有迴圈。

程式盡量滿足o(n)時間複雜度,且僅用o(1)記憶體。

你變成我,我變成你,我們便相遇了。

那麼為什麼能相遇呢?

設長鍊錶a長度為la,短鍊表長度lb;

由於速度相同,則在長鍊錶a走完la長度時,短鍊表b已經反過頭在a上走了la-lb的長度,剩餘要走的長度為la-(la-lb) = lb;

之後長鍊表a要反過頭在b上走,剩餘要走的長度也是lb;

也就是說目前兩個鍊錶「對齊」了。因此,接下來遇到的第乙個相同節點便是兩個鍊錶的交點。

那如果兩個鍊錶不存在交點呢?

答:這樣的話第4步就會一直執行到兩個鍊錶的末尾,la,lb都為null,也會跳出迴圈,返回null。

/**

* definition for singly-linked list.

* public class listnode

* }*/public

class

solution

return la;

}}

你的名字:你變成我,我變成你,我們便相遇了。

如果,我變成回憶

也許,多年後的某天,我們在不輕易間,回首這一生的時候,或多或少還會記得,曾在最美的華年裡,有個身影,就像烙印般 無比清晰的銘刻在心底。可能,你已經忘了許下的諾言,而我,卻一直停留在你離去的那天。從不敢想象,這段日子是怎麼熬過來的,恰似一場夢,又真實的,讓人忍不住哭泣。想起那些彼此走過的時光,多少歡聲...

草長鶯飛 你你我我的英語

月末了,英語總結了0.0但是我不知道改寫一些什麼東西在裡面。因為我一直把語言看做自然而然的存在。但是該來的還是要來滴。經過這麼乙個月sb學習法的薰陶吧我最大收穫就是在看乙個顏色的流 檔案時腦子的第一反應竟然是英語!震驚已經不足以形容我那時那刻的小小嘚瑟了 在心裡很是認同sb學習法,很仿生的理論,給人...

邂逅你,是我最美的相遇

寫下這個題目時,心裡不自覺的就笑了,也許很多人會說,太煽情了。也記得小白說過,你都是程式設計師了還有什麼感情細胞。這句話或許是沒說錯的,但是繁雜的 後依然隱藏著乙個敏感的神經,支配著我去寫下這些文字。人生幾度霜華,到頭來不過是大夢一場。不知不覺間,早已沒有了回程,那麼,真心愛一回,在心愛的人面前放縱...