Intersection of Two Linked Lists - 兩個鏈表的交點

  • 題目
    Write a program to find the node at which the intersection of two singly linked lists begins.
    For example, the following two linked lists:
A:     a1 → a2
                     ↘
                       c1 → c2 → c3
                     ↗            
B:     b1 → b2 → b3

begin to intersect at node c1.

Notes:

  • If the two linked lists have no intersection at all, return null

  • The linked lists must retain their original structure after the function returns.

  • You may assume there are no cycles anywhere in the entire linked structure.

  • Your code should preferably run in O(n) time and use only O(1) memory.

  • 分析
    兩個鏈表援所,如圖會從某個位置開始進行重合炫狱,求出這個起始交點雪猪,需要注意的是:

    • 沒有交點痴昧,返回NULL
    • 保持原來的結(jié)構(gòu)不變
    • 確保沒有環(huán)
    • 時間復(fù)雜度為O(n)蒿辙,空間復(fù)雜度為O(1)

    其中第一條和最后一條注意事項是最重要的熊镣,個人覺得這道題雖然在LeetCode上面是easy難度的吓肋,但是涉及到的內(nèi)容還是挺不少的签孔,因為有最后一條注意事項的限制,所以需要結(jié)合時間復(fù)雜度和空間復(fù)雜度來進行算法定制华临,對于本題芯杀,本文一共會列出三種算法來求解,并同時分析算法復(fù)雜度和時間復(fù)雜度雅潭。

  • 三種算法的分析

    1. 直接法
      遍歷鏈表A揭厚,對于每一個遍歷的節(jié)點都遍歷一次鏈表B,判斷是否有節(jié)點相同扶供,這種算法是最簡單的筛圆,但是效率不高
    • 時間復(fù)雜度:O(n * n)
    • 空間復(fù)雜度:O(1)

    顯然是不能滿足要求的,時間復(fù)雜度不是一個級別的

    1. 哈希表求解法
      先遍歷鏈表A椿浓,將鏈表A的每個節(jié)點放入哈希表中顽染,然后遍歷鏈表B漾岳,對于每個節(jié)點都利用哈希表進行判斷,看是否存在相同的節(jié)點
    • 時間復(fù)雜度:O(n)
    • 空間復(fù)雜度:O(n)

    這里時間復(fù)雜度是滿足了O(n)粉寞,但是空間復(fù)雜度卻由于創(chuàng)建了哈希表而變成了O(n)

    1. 雙指針求解法
      兩個鏈表的長度是不一樣的,但是重疊部分是一樣的左腔,也就是說后半部分是一樣的唧垦,那么就可以將長的鏈表的前半部分給裁剪了,然后將裁剪后的鏈表的起始節(jié)點作為第一個節(jié)液样,然后同時遍歷兩個鏈表進行判斷是否相同振亮,所以時間復(fù)雜度僅僅為O(n)
    • 時間復(fù)雜度:O(n)
    • 空間復(fù)雜度:O(1)

    這就是最符合題目的求解方法,從這道題也能看出來算法的重要性鞭莽,他能夠提高空間和時間的效率

  • 代碼

    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode *nodeA = headA;
        ListNode *nodeB = headB;
        int lengthA = 0; 
        int lengthB = 0;
        while(headA) {
            lengthA++;
            headA = headA->next;
        }
        while(headB) {
            lengthB++;
            headB = headB->next;
        }
        if (lengthA >= lengthB) {
            int difference = lengthA - lengthB;
            for (int i = 0; i < difference; i++) {
                nodeA = nodeA->next;
            }
        } else {
            int difference = lengthB - lengthA;
            for (int i = 0; i < difference; i++) {
                nodeB = nodeB->next;
            }
        }
        while(nodeA!=nodeB) {
            nodeA = nodeA->next;
            nodeB = nodeB->next;
        }
        return nodeA;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坊秸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子澎怒,更是在濱河造成了極大的恐慌褒搔,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喷面,死亡現(xiàn)場離奇詭異星瘾,居然都是意外死亡,警方通過查閱死者的電腦和手機惧辈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門琳状,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盒齿,你說我怎么就攤上這事念逞。” “怎么了边翁?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵翎承,是天一觀的道長。 經(jīng)常有香客問我倒彰,道長审洞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任待讳,我火速辦了婚禮芒澜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘创淡。我一直安慰自己痴晦,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布琳彩。 她就那樣靜靜地躺著誊酌,像睡著了一般部凑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碧浊,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天涂邀,我揣著相機與錄音,去河邊找鬼箱锐。 笑死比勉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的驹止。 我是一名探鬼主播浩聋,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼臊恋!你這毒婦竟也來了衣洁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抖仅,失蹤者是張志新(化名)和其女友劉穎坊夫,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岸售,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡践樱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凸丸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拷邢。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖屎慢,靈堂內(nèi)的尸體忽然破棺而出瞭稼,到底是詐尸還是另有隱情,我是刑警寧澤腻惠,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布环肘,位于F島的核電站,受9級特大地震影響集灌,放射性物質(zhì)發(fā)生泄漏悔雹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一欣喧、第九天 我趴在偏房一處隱蔽的房頂上張望腌零。 院中可真熱鬧,春花似錦唆阿、人聲如沸益涧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闲询。三九已至久免,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扭弧,已是汗流浹背阎姥。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸽捻,地道東北人丁寄。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像泊愧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盛正,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

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