国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

算法通關(guān)村第一關(guān)---鏈表經(jīng)典問題之兩個鏈表的第一個公共節(jié)點筆記

這篇具有很好參考價值的文章主要介紹了算法通關(guān)村第一關(guān)---鏈表經(jīng)典問題之兩個鏈表的第一個公共節(jié)點筆記。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

源碼地址:GitHub-算法通關(guān)村

1.hash
/**
     * 方法1  通過hash輔助查找
     *
     * @param headA
     * @param headB
     * @return
     */
    public static ListNode FindFirstCommonNodeByMap(ListNode headA, ListNode headB) {
        if (headA == null || headB == null) {
            return null;
        }
        Map<ListNode, Integer> map = new HashMap<>();
        while (headA != null) {
            map.put(headA, null);
            headA = headA.next;
        }
        while (headB != null) {
            if (map.containsKey(headB)) {
                return headB;
            }
            headB = headB.next;
        }
        return null;
    }
2.集合
/**
     * 方法2  通過集合輔助查找
     *
     * @param headA
     * @param headB
     * @return
     */
    public static ListNode FindFirstCommonNodeBySet(ListNode headA, ListNode headB) {
        if (headA == null || headB == null) {
            return null;
        }
        Set<ListNode> set = new HashSet<>();
        while (headA != null) {
            set.add(headA);
            headA = headA.next;
        }
        while (headB != null) {
            if (set.contains(headB)) {
                return headB;
            }
            headB = headB.next;
        }
        return null;
    }
3.棧
/**
     * 方法3  通過棧來輔助查找
     *
     * @param headA
     * @param headB
     * @return
     */
    public static ListNode findFirstCommonNodeByStack(ListNode headA, ListNode headB) {
        if (headA == null || headB == null) {
            return null;
        }
        Stack<ListNode> stackA = new Stack<>();
        Stack<ListNode> stackB = new Stack<>();

        while (headA != null) {
            stackA.push(headA);
            headA = headA.next;
        }
        while (headB != null) {
            stackB.push(headB);
            headB = headB.next;
        }

        ListNode pNode = null;
        while (stackA.size() > 0 && stackB.size() > 0) {
            if (stackA.peek() == stackB.peek()) {
                pNode = stackA.pop();
                stackB.pop();
            } else {
                break;
            }
        }
        return pNode;
    }
4.雙指針
/**
     * 方法4  通過雙指針來輔助查找
     *
     * @param headA
     * @param headB
     * @return
     */
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if (headA == null || headB == null) {
            return null;
        }

        ListNode ptrA = headA;
        ListNode ptrB = headB;

        while (ptrA != ptrB) {
            ptrA = ptrA == null ? headB : ptrA.next;
            ptrB = ptrB == null ? headA : ptrB.next;
        }

        return ptrA;
    }

文章來源地址http://www.zghlxwxcb.cn/news/detail-603977.html

到了這里,關(guān)于算法通關(guān)村第一關(guān)---鏈表經(jīng)典問題之兩個鏈表的第一個公共節(jié)點筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 算法通關(guān)村第一關(guān)------鏈表經(jīng)典問題之尋找第一個公共子結(jié)點

    算法通關(guān)村第一關(guān)------鏈表經(jīng)典問題之尋找第一個公共子結(jié)點

    哈希和集合 棧 拼接兩個字符串 同步相消 1、哈希和集合法: ????????將一個鏈表存入Map(或者集合)中,然后遍歷第二個鏈表,在遍歷的同時,檢查在Hash(或者集合)中是否包含此節(jié)點。 ?2、棧方法: ? ? ? ? 主要思想:棧是后進(jìn)先出原則,stack.peek()方法每次比較棧頂

    2024年02月12日
    瀏覽(27)
  • 算法通關(guān)村第一關(guān)——鏈表經(jīng)典問題之第一個公共子節(jié)點筆記

    算法通關(guān)村第一關(guān)——鏈表經(jīng)典問題之第一個公共子節(jié)點筆記

    題目:劍指 Offer 52. 兩個鏈表的第一個公共節(jié)點 輸入兩個鏈表,找出它們的第一個公共節(jié)點。 如下面的兩個鏈表: 在節(jié)點 c1 開始相交。 鏈表節(jié)點的定義 小技巧: 如果題目剛拿到手的時候沒有思路怎么辦? 試著將常用的數(shù)據(jù)結(jié)構(gòu)和常用的算法思想都想一遍,一個一個靠,看

    2024年02月16日
    瀏覽(26)
  • 算法學(xué)習(xí)-鏈表-level2-兩個鏈表的第一個公共節(jié)點

    算法學(xué)習(xí)-鏈表-level2-兩個鏈表的第一個公共節(jié)點

    輸入兩個鏈表,找出它們的第一個公共節(jié)點,如圖兩個鏈表從C1開始相交 實現(xiàn)思路:將第一個鏈表的所有節(jié)點存入集合中,遍歷第二個鏈表,并在集合中查詢鏈表二的節(jié)點是否出現(xiàn)過 實現(xiàn)代碼: ? 實現(xiàn)思路:根據(jù)題意可知在相同節(jié)點之后,兩鏈表的節(jié)點完全相同,這里我們

    2024年02月13日
    瀏覽(16)
  • 算法通關(guān)村第一關(guān)--鏈表青銅挑戰(zhàn)筆記

    算法通關(guān)村第一關(guān)--鏈表青銅挑戰(zhàn)筆記

    開始時間:2023年7月16日20:45:26 什么是鏈表,鏈表是一種通過指針串聯(lián)在一起的線性結(jié)構(gòu),每一個節(jié)點由兩部分組成,一個是數(shù)據(jù)域一個是指針域(存放指向下一個節(jié)點的指針),最后一個節(jié)點的指針域指向null(空指針的意思)。 鏈表的入口節(jié)點稱為鏈表的頭結(jié)點也就是hea

    2024年02月17日
    瀏覽(29)
  • 算法通關(guān)村第一關(guān)——鏈表青銅挑戰(zhàn)筆記

    算法通關(guān)村第一關(guān)——鏈表青銅挑戰(zhàn)筆記

    鏈表的基本單元就是 節(jié)點 ,也就是說鏈表是由一個一個節(jié)點構(gòu)成的。 而對于節(jié)點來說,里面至少會包含一個 指針 和一個 數(shù)據(jù)元素 ,也就是如下圖所示: 其中數(shù)據(jù)域用來存放數(shù)據(jù)元素,指針域用來存放指向下一個節(jié)點的指針,這樣一個一個連接起來的就是鏈表。如下圖所

    2024年02月16日
    瀏覽(26)
  • 算法通關(guān)村第一關(guān) | 鏈表青銅挑戰(zhàn)筆記

    算法通關(guān)村第一關(guān) | 鏈表青銅挑戰(zhàn)筆記

    一、 什么是鏈表? 鏈表是一種比較簡單、很常見的數(shù)據(jù)結(jié)構(gòu),是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。 二、鏈表的特點 鏈表是一種比較簡單、很常見的數(shù)據(jù)結(jié)構(gòu),是線性表(List)的一種,是一種物理存

    2024年02月14日
    瀏覽(24)
  • 算法通關(guān)村第一關(guān)———鏈表青銅挑戰(zhàn)筆記

    算法通關(guān)村第一關(guān)———鏈表青銅挑戰(zhàn)筆記

    通過類來構(gòu)建節(jié)點,用next指針將節(jié)點連起來。 會有插入位置的范圍問題,不能超出鏈表范圍 會有刪除位置的范圍問題 構(gòu)造雙向鏈表 插入和刪除都有三種情況,頭中尾 ?

    2024年02月15日
    瀏覽(25)
  • 《算法通關(guān)村第一關(guān)——鏈表青銅挑戰(zhàn)筆記》

    《算法通關(guān)村第一關(guān)——鏈表青銅挑戰(zhàn)筆記》

    鏈表中每個結(jié)點內(nèi)部的“生態(tài)環(huán)境”。 數(shù)據(jù)域存儲元素的值,指針域存放指針。 示例: c語言構(gòu)造鏈表 可分為三步 1.創(chuàng)建頭指針。 2.創(chuàng)建頭結(jié)點,使頭指針指向頭結(jié)點。 3.循環(huán)創(chuàng)建結(jié)點,并使前一個結(jié)點指向當(dāng)前結(jié)點。 1.)創(chuàng)建結(jié)點。 2.)使前一個結(jié)點指向當(dāng)前結(jié)點。 3.)

    2024年02月15日
    瀏覽(27)
  • 算法通關(guān)村第一關(guān)-鏈表青銅挑戰(zhàn)筆記

    算法通關(guān)村第一關(guān)-鏈表青銅挑戰(zhàn)筆記

    平時我們一般都是用數(shù)組,每個數(shù)組都會有一個相對應(yīng)的索引,這樣就使得數(shù)組能夠方便的調(diào)用出對應(yīng)索引得到需要的數(shù)據(jù),但是這也造成了一個問題,那就是不好在數(shù)組中插入或者刪除一個數(shù)據(jù),例如 int arr[]={1,2,4,5}如果我想在數(shù)組中的2和4中添加一個數(shù)據(jù)3 那么我們首先就

    2024年02月15日
    瀏覽(25)
  • 編程導(dǎo)航算法通關(guān)村第一關(guān)|青銅|鏈表基礎(chǔ)

    編程導(dǎo)航算法通關(guān)村第一關(guān)|青銅|鏈表基礎(chǔ)

    JVM有棧區(qū)和堆區(qū) 棧區(qū):存引用,就是指向?qū)嶋H對象的地址。。 堆區(qū):存的是創(chuàng)建的對象。 定義 規(guī)范的鏈表定義 LeetCode算法題中常用 遍歷 插入 刪除 結(jié)點 結(jié)構(gòu)遍歷 插入 從頭插入 從尾插入 從某個值為key的節(jié)點后面插入 刪除 刪除頭結(jié)點 刪除尾結(jié)點 按值刪除

    2024年02月15日
    瀏覽(52)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包