五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【直播回放】ChatGPT編程刷力扣面試題 02.07. 鏈表相交

2023-07-30 03:23 作者:ChatGPT云炬學(xué)長  | 我要投稿

題目描述

給你兩個單鏈表的頭節(jié)點?headA 和 headB ,請你找出并返回兩個單鏈表相交的起始節(jié)點。如果兩個鏈表沒有交點,返回 null 。


圖示兩個鏈表在節(jié)點 c1 開始相交:



題目數(shù)據(jù) 保證 整個鏈?zhǔn)浇Y(jié)構(gòu)中不存在環(huán)。


注意,函數(shù)返回結(jié)果后,鏈表必須 保持其原始結(jié)構(gòu) 。

示例 1:



輸入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3

輸出:Intersected at '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

輸出:Intersected at '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 。

?

提示:


listA 中節(jié)點數(shù)目為 m

listB 中節(jié)點數(shù)目為 n

0 <= m, n <= 3 * 104

1 <= Node.val <= 105

0 <= skipA <= m

0 <= skipB <= n

如果 listA 和 listB 沒有交點,intersectVal 為 0

如果 listA 和 listB 有交點,intersectVal == listA[skipA + 1] == listB[skipB + 1]


來源:力扣(LeetCode)

鏈接:https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci

著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

基本思路

遍歷鏈表 headA,將每個節(jié)點的引用存儲在哈希表中。然后遍歷鏈表 headB,檢查哈希表中是否存在相同的節(jié)點引用,如果存在則說明鏈表相交,返回相交節(jié)點;如果遍歷完鏈表 headB 都沒有找到相交節(jié)點,則返回 null。

時間復(fù)雜度分析:設(shè)鏈表 headA 的長度為 m,鏈表 headB 的長度為 n,遍歷鏈表 headA 和 headB 各需要 O(m+n) 的時間,因此總時間復(fù)雜度為 O(m+n)。


解法代碼(Go)


func getIntersectionNode(headA, headB *ListNode) *ListNode {
? ?nodeSet := make(map[*ListNode]bool)
? ?cur := headA
for cur != nil {
? ? ? ?nodeSet[cur] = true
? ? ? ?cur = cur.Next
}
? ?cur = headB
for cur != nil {
if _, ok := nodeSet[cur]; ok {
return cur
}
? ? ? ?cur = cur.Next
}
return nil
}


逐步驗算

實際應(yīng)用

這個函數(shù)的實際應(yīng)用是在兩個鏈表中找到它們的相交節(jié)點。通過比較每個鏈表中的節(jié)點是否在另一個鏈表中存在,可以確定它們的相交節(jié)點。

具體的應(yīng)用場景可以是:

1.? 鏈表相交檢測:可以用于判斷兩個鏈表是否相交。如果相交,可以返回相交的節(jié)點,否則返回空指針。這在解決鏈表相關(guān)的問題時非常有用,比如判斷兩個鏈表是否有公共部分。

2.? 鏈表環(huán)檢測:如果鏈表中存在環(huán),可以使用這個函數(shù)來找到環(huán)的入口節(jié)點。具體方法是,將第一個鏈表中的節(jié)點添加到集合中,然后遍歷第二個鏈表,如果遇到一個節(jié)點在集合中已經(jīng)存在,則說明這個節(jié)點就是環(huán)的入口節(jié)點。

總結(jié)來說,這個函數(shù)可以用于鏈表相交檢測和鏈表環(huán)檢測的場景,幫助解決一些與鏈表相關(guān)的問題。


【直播回放】ChatGPT編程刷力扣面試題 02.07. 鏈表相交的評論 (共 條)

分享到微博請遵守國家法律
金坛市| 永新县| 米泉市| 政和县| 景德镇市| 雷州市| 南城县| 衡山县| 桦甸市| 富锦市| 玉门市| 滦南县| 阿拉善右旗| 偏关县| 通榆县| 荔波县| 磐石市| 精河县| 贡觉县| 陵川县| 恩平市| 银川市| 嘉禾县| 阿尔山市| 榆林市| 界首市| 稷山县| 邢台市| 临西县| 博爱县| 梁河县| 紫阳县| 万源市| 开阳县| 沅陵县| 汾西县| 延边| 谢通门县| 江西省| 柏乡县| 五常市|