【LeetCode】160-相交鏈表

相交鏈表

題目

編寫一個程序曼氛,找到兩個單鏈表相交的起始節(jié)點飞盆。

示例 1:
輸入: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
輸入解釋:相交節(jié)點的值為 8 (注意静稻,如果兩個列表相交則不能為 0)。從各自的表頭開始算起寄摆,鏈表 A 為 [4,1,8,4,5]逝她,鏈表 B 為 [5,0,1,8,4,5]。在 A 中,相交節(jié)點前有 2 個節(jié)點仅偎;在 B 中跨蟹,相交節(jié)點前有 3 個節(jié)點。
示例 2:
輸入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
輸出:Reference of the node with value = 2
輸入解釋:相交節(jié)點的值為 2 (注意橘沥,如果兩個列表相交則不能為 0)窗轩。從各自的表頭開始算起,鏈表 A 為 [0,9,1,2,4]座咆,鏈表 B 為 [3,2,4]痢艺。在 A 中,相交節(jié)點前有 3 個節(jié)點介陶;在 B 中堤舒,相交節(jié)點前有 1 個節(jié)點。
示例 3:
輸入: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.
在返回結(jié)果后澳厢,兩個鏈表仍須保持原有的結(jié)構(gòu)环础。
可假定整個鏈表結(jié)構(gòu)中沒有循環(huán)。
程序盡量滿足 O(n) 時間復(fù)雜度剩拢,且僅用 O(1) 內(nèi)存线得。

解題思路

使用 2 個指針,分別遍歷 headA裸扶,headB框都,每次前進(jìn) 1 步搬素。當(dāng)一個鏈表遍歷完時呵晨,從另一個鏈表的起始位置開始遍歷。如果兩個鏈表相交熬尺,則兩個指針一定會相遇摸屠,相遇點即相交點。如果兩個指針都已遍歷完兩個鏈表粱哼,且仍未相遇季二,則說明鏈表不相交。

代碼

class Solution { 
     public static ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if (headA == null || headB == null) {
           return null;
        }
    
        ListNode l1 = headA;
        ListNode l2 = headB;
        while (l1 != l2) {
            // 如果l1、l2不相交胯舷,則實際上會遍歷 l1.length + l2.length 次刻蚯,最終 l1 == l2 == null
            l1 = l1 == null ? headB : l1.next;
            l2 = l2 == null ? headA : l2.next;
        }
        return l1;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市桑嘶,隨后出現(xiàn)的幾起案子炊汹,更是在濱河造成了極大的恐慌,老刑警劉巖逃顶,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讨便,死亡現(xiàn)場離奇詭異,居然都是意外死亡以政,警方通過查閱死者的電腦和手機(jī)霸褒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盈蛮,“玉大人废菱,你說我怎么就攤上這事∶挤矗” “怎么了昙啄?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寸五。 經(jīng)常有香客問我梳凛,道長,這世上最難降的妖魔是什么梳杏? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任韧拒,我火速辦了婚禮,結(jié)果婚禮上十性,老公的妹妹穿的比我還像新娘叛溢。我一直安慰自己,他們只是感情好劲适,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布楷掉。 她就那樣靜靜地躺著,像睡著了一般霞势。 火紅的嫁衣襯著肌膚如雪烹植。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天愕贡,我揣著相機(jī)與錄音草雕,去河邊找鬼。 笑死固以,一個胖子當(dāng)著我的面吹牛墩虹,可吹牛的內(nèi)容都是我干的嘱巾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诫钓,長吁一口氣:“原來是場噩夢啊……” “哼旬昭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起菌湃,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤稳懒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后慢味,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體场梆,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年纯路,在試婚紗的時候發(fā)現(xiàn)自己被綠了或油。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡驰唬,死狀恐怖顶岸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叫编,我是刑警寧澤辖佣,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站搓逾,受9級特大地震影響卷谈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霞篡,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一世蔗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朗兵,春花似錦污淋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盐欺,卻和暖如春赁豆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背找田。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工歌憨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留着憨,地道東北人墩衙。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親漆改。 傳聞我的和親對象是個殘疾皇子心铃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.題目描述 編寫一個程序,找到兩個單鏈表相交的起始節(jié)點挫剑。 如下面的兩個鏈表:在節(jié)點 c1 開始相交去扣。 示例 1:...
    Jayce_xi閱讀 641評論 0 0
  • 編寫一個程序,找到兩個單鏈表相交的起始節(jié)點樊破。如下面的兩個鏈表:1.png在節(jié)點 c1 開始相交愉棱。示例 1:2.pn...
    餅干不干閱讀 488評論 0 51
  • 題目 編寫一個程序,找到兩個單鏈表相交的起始節(jié)點哲戚。 如下面的兩個鏈表: 在節(jié)點 c1 開始相交奔滑。 示例 1: 輸入...
    禾木清清閱讀 151評論 0 0
  • 160. 相交鏈表 編寫一個程序,找到兩個單鏈表相交的起始節(jié)點顺少。 示例 1: 輸入:intersectVal = ...
    TheKey_閱讀 290評論 0 1
  • 題目描述: 編寫一個程序朋其,找到兩個單鏈表相交的起始節(jié)點。 如下面的兩個鏈表: 在節(jié)點 c1 開始相交脆炎。 示例 1:...
    _溯光閱讀 295評論 0 0