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

(鏈表) 劍指 Offer 52. 兩個(gè)鏈表的第一個(gè)公共節(jié)點(diǎn) ——【Leetcode每日一題】

這篇具有很好參考價(jià)值的文章主要介紹了(鏈表) 劍指 Offer 52. 兩個(gè)鏈表的第一個(gè)公共節(jié)點(diǎn) ——【Leetcode每日一題】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?劍指 Offer 52. 兩個(gè)鏈表的第一個(gè)公共節(jié)點(diǎn)

難度:簡(jiǎn)單

輸入兩個(gè)鏈表,找出它們的第一個(gè)公共節(jié)點(diǎn)。

如下面的兩個(gè)鏈表:
(鏈表) 劍指 Offer 52. 兩個(gè)鏈表的第一個(gè)公共節(jié)點(diǎn) ——【Leetcode每日一題】,LeetCode,鏈表,leetcode,數(shù)據(jù)結(jié)構(gòu)
在節(jié)點(diǎn) c1 開始相交。

示例 1:

(鏈表) 劍指 Offer 52. 兩個(gè)鏈表的第一個(gè)公共節(jié)點(diǎn) ——【Leetcode每日一題】,LeetCode,鏈表,leetcode,數(shù)據(jù)結(jié)構(gòu)

輸入: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é)點(diǎn)的值為 8 (注意,如果兩個(gè)列表相交則不能為 0)。從各自的表頭開始算起,鏈表 A 為 [4,1,8,4,5],鏈表 B 為 [5,0,1,8,4,5]。在 A 中,相交節(jié)點(diǎn)前有 2 個(gè)節(jié)點(diǎn);在 B 中,相交節(jié)點(diǎn)前有 3 個(gè)節(jié)點(diǎn)。

示例 2:

(鏈表) 劍指 Offer 52. 兩個(gè)鏈表的第一個(gè)公共節(jié)點(diǎn) ——【Leetcode每日一題】,LeetCode,鏈表,leetcode,數(shù)據(jù)結(jié)構(gòu)

輸入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
輸出:Reference of the node with value = 2
輸入解釋:相交節(jié)點(diǎn)的值為 2 (注意,如果兩個(gè)列表相交則不能為 0)。從各自的表頭開始算起,鏈表 A 為 [0,9,1,2,4],鏈表 B 為 [3,2,4]。在 A 中,相交節(jié)點(diǎn)前有 3 個(gè)節(jié)點(diǎn);在 B 中,相交節(jié)點(diǎn)前有 1 個(gè)節(jié)點(diǎn)。

示例 3:

(鏈表) 劍指 Offer 52. 兩個(gè)鏈表的第一個(gè)公共節(jié)點(diǎn) ——【Leetcode每日一題】,LeetCode,鏈表,leetcode,數(shù)據(jù)結(jié)構(gòu)

輸入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
輸出:null
輸入解釋:從各自的表頭開始算起,鏈表 A 為 [2,6,4],鏈表 B 為 [1,5]。由于這兩個(gè)鏈表不相交,所以 intersectVal 必須為 0,而 skipA 和 skipB 可以是任意值。
解釋:這兩個(gè)鏈表不相交,因此返回 null。

注意

  • 如果兩個(gè)鏈表沒有交點(diǎn),返回 null.
  • 在返回結(jié)果后,兩個(gè)鏈表仍須保持原有的結(jié)構(gòu)。
  • 可假定整個(gè)鏈表結(jié)構(gòu)中沒有循環(huán)。
  • 程序盡量滿足 O ( n ) O(n) O(n) 時(shí)間復(fù)雜度,且僅用 O ( 1 ) O(1) O(1) 內(nèi)存。
  • 本題與160. 相交鏈表相同。

??思路:雙指針

設(shè) A 的長(zhǎng)度為 a + cB 的長(zhǎng)度為 b + c,其中 c 為尾部公共部分長(zhǎng)度,可知:
a + c + b = b + c + a a + c + b = b + c + a a+c+b=b+c+a

  • 當(dāng)訪問鏈表 A 的指針訪問到鏈表尾部時(shí),令它從鏈表 B 的頭部重新開始訪問鏈表 B
  • 同樣地,當(dāng)訪問鏈表 B 的指針訪問到鏈表尾部時(shí),令它從鏈表 A 的頭部重新開始訪問鏈表 A。

這樣就能控制訪問 AB 兩個(gè)鏈表的指針能同時(shí)訪問到交點(diǎn)。

??代碼:(C++、Java)

C++

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode* cur1 = headA;
        ListNode* cur2 = headB;
        while(cur1 != cur2){
            cur1 = (cur1 == nullptr) ? headB : cur1->next;
            cur2 = (cur2 == nullptr) ? headA : cur2->next;
        }
        return cur1;
    }
};

Java

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
class Solution {
    ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode cur1 = headA, cur2 = headB;
        while(cur1 != cur2){
            cur1 = (cur1 == null) ? headB : cur1.next;
            cur2 = (cur2 == null) ? headA : cur2.next;
        }
        return cur1;
    }
}
?? 運(yùn)行結(jié)果:

(鏈表) 劍指 Offer 52. 兩個(gè)鏈表的第一個(gè)公共節(jié)點(diǎn) ——【Leetcode每日一題】,LeetCode,鏈表,leetcode,數(shù)據(jù)結(jié)構(gòu)

?? 復(fù)雜度分析:
  • 時(shí)間復(fù)雜度 O ( m + n ) O(m+n) O(m+n),其中 mn 是分別是鏈表 headAheadB 的長(zhǎng)度。兩個(gè)指針同時(shí)遍歷兩個(gè)鏈表,每個(gè)指針遍歷兩個(gè)鏈表各一次。
  • 空間復(fù)雜度 O ( 1 ) O(1) O(1)

題目來源:力扣。

放棄一件事很容易,每天能堅(jiān)持一件事一定很酷,一起每日一題吧!
關(guān)注我LeetCode主頁 / CSDN—力扣專欄,每日更新!文章來源地址http://www.zghlxwxcb.cn/news/detail-613403.html

注: 如有不足,歡迎指正!

到了這里,關(guān)于(鏈表) 劍指 Offer 52. 兩個(gè)鏈表的第一個(gè)公共節(jié)點(diǎn) ——【Leetcode每日一題】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 算法通關(guān)村第一關(guān)——鏈表經(jīng)典問題之尋找兩個(gè)鏈表的第一個(gè)公共結(jié)點(diǎn)

    算法通關(guān)村第一關(guān)——鏈表經(jīng)典問題之尋找兩個(gè)鏈表的第一個(gè)公共結(jié)點(diǎn)

    這是一道經(jīng)典的鏈表問題,來自劍指offer52,題目是這樣的:輸入兩個(gè)鏈表,找出它們的第一個(gè)公共結(jié)點(diǎn),如下圖所示: 兩個(gè)鏈表的頭結(jié)點(diǎn)均已知,相交之后成為一個(gè)單鏈表,但是相交的位置未知,并且相交之前的結(jié)點(diǎn)數(shù)也是未知的,請(qǐng)?jiān)O(shè)計(jì)算法找到兩個(gè)鏈表的合并點(diǎn)。 第一

    2024年02月16日
    瀏覽(20)
  • 劍指 Offer 35. 復(fù)雜鏈表的復(fù)制

    請(qǐng)實(shí)現(xiàn) copyRandomList 函數(shù),復(fù)制一個(gè)復(fù)雜鏈表。在復(fù)雜鏈表中,每個(gè)節(jié)點(diǎn)除了有一個(gè) next 指針指向下一個(gè)節(jié)點(diǎn),還有一個(gè) random 指針指向鏈表中的任意節(jié)點(diǎn)或者 null。 示例 1: 輸入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 輸出:[[7,null],[13,0],[11,4],[10,2],[1,0]] 示例 2: 輸入:head = [[1

    2024年02月15日
    瀏覽(21)
  • 《劍指offer》——合并兩個(gè)排序的鏈表

    《劍指offer》——合并兩個(gè)排序的鏈表

    本期給大家?guī)淼氖??合并兩個(gè)排序的鏈表 這道題的講解!??! ?接下來,我們還是先從題干的內(nèi)容入手,先分析一波題目,在進(jìn)行畫圖思考操作。 ??? 題目如下: 示例1 輸入:{1,3,5},{2,4,6} 返回值:{1,2,3,4,5,6} 示例2 輸入:{},{} 返回值:{} 示例3 輸入:{-1,2,4},{1,3,4} 返回值:

    2023年04月13日
    瀏覽(16)
  • 【劍指offer|圖解|鏈表】刪除鏈表的節(jié)點(diǎn) + 訓(xùn)練計(jì)劃 V

    【劍指offer|圖解|鏈表】刪除鏈表的節(jié)點(diǎn) + 訓(xùn)練計(jì)劃 V

    ?? 個(gè)人主頁:@聆風(fēng)吟的個(gè)人主頁 ??系列專欄:本期文章收錄在專欄《劍指offer每日一練》中,大家有興趣可以瀏覽和關(guān)注,后面將會(huì)持續(xù)更新更多精彩內(nèi)容! ?寄語:少年有夢(mèng)不應(yīng)止于心動(dòng),更要付諸行動(dòng)。 ??歡迎大家關(guān)注??點(diǎn)贊??收藏??評(píng)論?? ??作者留言:文章

    2024年02月08日
    瀏覽(19)
  • 【劍指offer|圖解|鏈表】鏈表的中間結(jié)點(diǎn) + 鏈表中倒數(shù)第k個(gè)結(jié)點(diǎn)

    【劍指offer|圖解|鏈表】鏈表的中間結(jié)點(diǎn) + 鏈表中倒數(shù)第k個(gè)結(jié)點(diǎn)

    ??個(gè)人主頁: 聆風(fēng)吟 ??系列專欄: 數(shù)據(jù)結(jié)構(gòu)、算法模板 ??少年有夢(mèng)不應(yīng)止于心動(dòng),更要付諸行動(dòng)。 ???? ?? hello! 小伙伴們大家好哇,今天作者給大家?guī)淼氖擎湵淼南嚓P(guān)面試題的講解,在學(xué)習(xí)了下文之后,相信大家可以更好的理解鏈表,并且我們同過本文的練習(xí)相

    2024年02月05日
    瀏覽(26)
  • (鏈表) 劍指 Offer 25. 合并兩個(gè)排序的鏈表 ——【Leetcode每日一題】

    (鏈表) 劍指 Offer 25. 合并兩個(gè)排序的鏈表 ——【Leetcode每日一題】

    難度:簡(jiǎn)單 輸入兩個(gè)遞增排序的鏈表,合并這兩個(gè)鏈表并使新鏈表中的節(jié)點(diǎn)仍然是遞增排序的。 示例1: 輸入:1-2-4, 1-3-4 輸出:1-1-2-3-4-4 限制 : 0 = 鏈表長(zhǎng)度 = 1000 注意:本題與 21. 合并兩個(gè)有序鏈表 相同 ??思路: 法一:遞歸 將該問題可以分解成子鏈表,只比較當(dāng)前 l1 鏈

    2024年02月15日
    瀏覽(21)
  • Leetcode-每日一題【劍指 Offer 35. 復(fù)雜鏈表的復(fù)制】

    Leetcode-每日一題【劍指 Offer 35. 復(fù)雜鏈表的復(fù)制】

    請(qǐng)實(shí)現(xiàn)? copyRandomList ?函數(shù),復(fù)制一個(gè)復(fù)雜鏈表。在復(fù)雜鏈表中,每個(gè)節(jié)點(diǎn)除了有一個(gè)? next ?指針指向下一個(gè)節(jié)點(diǎn),還有一個(gè)? random ?指針指向鏈表中的任意節(jié)點(diǎn)或者? null 。 示例 1: 輸入: head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 輸出: [[7,null],[13,0],[11,4],[10,2],[1,0]] 示例 2: 輸入

    2024年02月11日
    瀏覽(25)
  • 合并兩個(gè)有序鏈表,將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。

    合并兩個(gè)有序鏈表,將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。

    題記: 將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。 示例 1: 輸入 :l1 = [1,2,4], l2 = [1,3,4] 輸出 :[1,1,2,3,4,4] 示例 2: 輸入 :l1 = [], l2 = [] 輸出 :[] 示例 3: 輸入 :l1 = [], l2 = [0] 輸出 :[0] 提示: 兩個(gè)鏈表的節(jié)點(diǎn)數(shù)

    2024年02月07日
    瀏覽(30)
  • 劍指 Offer 09. 用兩個(gè)棧實(shí)現(xiàn)隊(duì)列

    ?? 作者簡(jiǎn)介:一名在后端領(lǐng)域?qū)W習(xí),并渴望能夠?qū)W有所成的追夢(mèng)人。 ?? 個(gè)人主頁:不 良 ?? 系列專欄:??劍指 Offer ???Linux ?? 學(xué)習(xí)格言:博觀而約取,厚積而薄發(fā) ?? 歡迎進(jìn)來的小伙伴,如果小伙伴們?cè)趯W(xué)習(xí)的過程中,發(fā)現(xiàn)有需要糾正的地方,煩請(qǐng)指正,希望能夠與諸

    2024年02月08日
    瀏覽(25)
  • 劍指offer刷題筆記-鏈表

    劍指offer刷題筆記-鏈表

    少年何妨夢(mèng)摘星 敢挽桑弓射玉衡 解決與鏈表相關(guān)的問題總是有大量的指針操作,而指針操作的代碼總是容易出錯(cuò)的。很多面試官喜歡出與鏈表相關(guān)的問題,就是想通過指針操作來考察應(yīng)聘者的編碼功底。 題目鏈接 來自于 AcWing 、 Leetcode (LCR) 目錄 ?從尾到頭打印鏈表 題目

    2024年02月21日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包