成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[Leetcode] Intersection of Two Linked Lists 鏈表交點(diǎn)

andycall / 1509人閱讀

摘要:但是統(tǒng)計(jì)交點(diǎn)到終點(diǎn)的步數(shù)比較困難,我們可以直接統(tǒng)計(jì)從最短鏈表開頭到交點(diǎn)的步數(shù),其實(shí)是等價(jià)的。

雙指針法 復(fù)雜度

時(shí)間 O(N) 空間 O(1)

思路

先算出兩個(gè)鏈表各自的長度,然后從較長的鏈表先遍歷,遍歷到較長鏈表剩余長度和較短鏈表一樣時(shí),用兩個(gè)指針同時(shí)遍歷兩個(gè)鏈表。這樣如果鏈表有交點(diǎn)的話,兩個(gè)指針已經(jīng)一定會相遇。

代碼
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode nodea = headA, nodeb = headB;
        int lena = 0, lenb = 0;
        // 計(jì)算鏈表A的長度
        while(nodea != null){
            lena++;
            nodea = nodea.next;
        }
        // 計(jì)算鏈表B的長度
        while(nodeb != null){
            lenb++;
            nodeb = nodeb.next;
        }
        // 讓較長的鏈表先飛一會
        for(int i = 0; i < Math.abs(lena - lenb); i++){
            if(lenb > lena) headB = headB.next;
            else if(lena > lenb) headA = headA.next;
        }
        while(headA != null && headB != null){
            if(headA == headB) return headA;
            headA = headA.next;
            headB = headB.next;
        }
        return null;
    }
}
后續(xù) Follow Up

Q:如果是K個(gè)鏈表的交點(diǎn)如何求?
A:先找出K個(gè)鏈表中長度最短的那個(gè),然后用同樣的方法將其他鏈表和這個(gè)鏈表兩兩比較,因?yàn)槊總€(gè)都有可能有一個(gè)不同的交點(diǎn),所以我們要維護(hù)一個(gè)全局最優(yōu)的交點(diǎn),更新這個(gè)全局最優(yōu)交點(diǎn)的條件,是這個(gè)交點(diǎn)到終點(diǎn)的步數(shù)是最少的。但是統(tǒng)計(jì)交點(diǎn)到終點(diǎn)的步數(shù)比較困難,我們可以直接統(tǒng)計(jì)從最短鏈表開頭到交點(diǎn)的步數(shù),其實(shí)是等價(jià)的。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64504.html

相關(guān)文章

  • LeetCode 160: 相交鏈表 Intersection of Two Linked List

    摘要:示例輸入輸出輸入解釋相交節(jié)點(diǎn)的值為注意,如果兩個(gè)列表相交則不能為。解釋這兩個(gè)鏈表不相交,因此返回。注意如果兩個(gè)鏈表沒有交點(diǎn),返回在返回結(jié)果后,兩個(gè)鏈表仍須保持原有的結(jié)構(gòu)。此時(shí)將指向鏈表長鏈表的頭節(jié)點(diǎn),不變。 愛寫B(tài)ug(ID:iCodeBugs) 編寫一個(gè)程序,找到兩個(gè)單鏈表相交的起始節(jié)點(diǎn)。 Write a program to find the node at which the i...

    wing324 評論0 收藏0
  • LeetCode 160: 相交鏈表 Intersection of Two Linked List

    摘要:示例輸入輸出輸入解釋相交節(jié)點(diǎn)的值為注意,如果兩個(gè)列表相交則不能為。解釋這兩個(gè)鏈表不相交,因此返回。注意如果兩個(gè)鏈表沒有交點(diǎn),返回在返回結(jié)果后,兩個(gè)鏈表仍須保持原有的結(jié)構(gòu)。此時(shí)將指向鏈表長鏈表的頭節(jié)點(diǎn),不變。 愛寫B(tài)ug(ID:iCodeBugs) 編寫一個(gè)程序,找到兩個(gè)單鏈表相交的起始節(jié)點(diǎn)。 Write a program to find the node at which the i...

    ormsf 評論0 收藏0
  • Intersection of 2 lists

    摘要:得到個(gè)鏈條的長度。將長的鏈條向前移動(dòng)差值兩個(gè)指針一起前進(jìn),遇到相同的即是交點(diǎn),如果沒找到,返回空間復(fù)雜度,時(shí)間復(fù)雜度 Intersection of Two Linked ListsWrite a program to find the node at which the intersection of two singly linked lists begins. For examp...

    thursday 評論0 收藏0
  • LeetCode 攻略 - 2019 年 7 月下半月匯總(100 題攻略)

    摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經(jīng)到題,所以后面會調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時(shí),攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區(qū)別...

    tain335 評論0 收藏0
  • JAVASCRIPT算法(6)

    摘要:還是鏈表算法題目描述給出兩個(gè)無環(huán)單鏈表判斷和是否相交。所以可以得出另外一種解法,先遍歷鏈表,記住尾節(jié)點(diǎn),然后遍歷鏈表,比較兩個(gè)鏈表的尾節(jié)點(diǎn),如果相同則相交,不同則不相交。想法還是奇妙的。算法寫起來不難,難的是想到這個(gè)。 還是鏈表算法 題目描述:給出兩個(gè)無環(huán)單鏈表A: a1 → a2 ↘ c1 → c2 → c3 → ...

    FreeZinG 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<