精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

數據結構與算法之鏈表相交,找交點

開發 前端 算法
給你兩個單鏈表的頭節點 headA 和 headB ,請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表沒有交點,返回 null 。

[[441326]]

鏈表相交

力扣題目鏈接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci

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

圖示兩個鏈表在節點 c1 開始相交:

題目數據 保證 整個鏈式結構中不存在環。

注意,函數返回結果后,鏈表必須 保持其原始結構 。

示例 1:

示例 2:

示例 3:

思路

簡單來說,就是求兩個鏈表交點節點的指針。這里同學們要注意,交點不是數值相等,而是指針相等。

為了方便舉例,假設節點元素數值相等,則節點指針相等。

看如下兩個鏈表,目前curA指向鏈表A的頭結點,curB指向鏈表B的頭結點:

我們求出兩個鏈表的長度,并求出兩個鏈表長度的差值,然后讓curA移動到,和curB 末尾對齊的位置,如圖: 

此時我們就可以比較curA和curB是否相同,如果不相同,同時向后移動curA和curB,如果遇到curA == curB,則找到交點。

否則循環退出返回空指針。

C++代碼如下:

  1. class Solution { 
  2. public
  3.     ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { 
  4.         ListNode* curA = headA; 
  5.         ListNode* curB = headB; 
  6.         int lenA = 0, lenB = 0; 
  7.         while (curA != NULL) { // 求鏈表A的長度 
  8.             lenA++; 
  9.             curA = curA->next
  10.         } 
  11.         while (curB != NULL) { // 求鏈表B的長度 
  12.             lenB++; 
  13.             curB = curB->next
  14.         } 
  15.         curA = headA; 
  16.         curB = headB; 
  17.         // 讓curA為最長鏈表的頭,lenA為其長度 
  18.         if (lenB > lenA) { 
  19.             swap (lenA, lenB); 
  20.             swap (curA, curB); 
  21.         } 
  22.         // 求長度差 
  23.         int gap = lenA - lenB; 
  24.         // 讓curA和curB在同一起點上(末尾位置對齊) 
  25.         while (gap--) { 
  26.             curA = curA->next
  27.         } 
  28.         // 遍歷curA 和 curB,遇到相同則直接返回 
  29.         while (curA != NULL) { 
  30.             if (curA == curB) { 
  31.                 return curA; 
  32.             } 
  33.             curA = curA->next
  34.             curB = curB->next
  35.         } 
  36.         return NULL
  37.     } 
  38. }; 
  • 時間復雜度:
  • 空間復雜度:

其他語言版本

Java

  1. public class Solution { 
  2.     public ListNode getIntersectionNode(ListNode headA, ListNode headB) { 
  3.         ListNode curA = headA; 
  4.         ListNode curB = headB; 
  5.         int lenA = 0, lenB = 0; 
  6.         while (curA != null) { // 求鏈表A的長度 
  7.             lenA++; 
  8.             curA = curA.next
  9.         } 
  10.         while (curB != null) { // 求鏈表B的長度 
  11.             lenB++; 
  12.             curB = curB.next
  13.         } 
  14.         curA = headA; 
  15.         curB = headB; 
  16.         // 讓curA為最長鏈表的頭,lenA為其長度 
  17.         if (lenB > lenA) { 
  18.             //1. swap (lenA, lenB); 
  19.             int tmpLen = lenA; 
  20.             lenA = lenB; 
  21.             lenB = tmpLen; 
  22.             //2. swap (curA, curB); 
  23.             ListNode tmpNode = curA; 
  24.             curA = curB; 
  25.             curB = tmpNode; 
  26.         } 
  27.         // 求長度差 
  28.         int gap = lenA - lenB; 
  29.         // 讓curA和curB在同一起點上(末尾位置對齊) 
  30.         while (gap-- > 0) { 
  31.             curA = curA.next
  32.         } 
  33.         // 遍歷curA 和 curB,遇到相同則直接返回 
  34.         while (curA != null) { 
  35.             if (curA == curB) { 
  36.                 return curA; 
  37.             } 
  38.             curA = curA.next
  39.             curB = curB.next
  40.         } 
  41.         return null
  42.     } 
  43.  

Python

  1. class Solution: 
  2.     def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: 
  3.         ""
  4.         根據快慢法則,走的快的一定會追上走得慢的。 
  5.         在這道題里,有的鏈表短,他走完了就去走另一條鏈表,我們可以理解為走的快的指針。 
  6.  
  7.         那么,只要其中一個鏈表走完了,就去走另一條鏈表的路。如果有交點,他們最終一定會在同一個 
  8.         位置相遇 
  9.         ""
  10.         cur_a, cur_b = headA, headB     # 用兩個指針代替a和b 
  11.  
  12.  
  13.         while cur_a != cur_b: 
  14.             cur_a = cur_a.next if cur_a else headB      # 如果a走完了,那么就切換到b走 
  15.             cur_b = cur_b.next if cur_b else headA      # 同理,b走完了就切換到a 
  16.  
  17.         return cur_a 

Go

  1. func getIntersectionNode(headA, headB *ListNode) *ListNode { 
  2.     curA := headA 
  3.     curB := headB 
  4.     lenA, lenB := 0, 0 
  5.     // 求A,B的長度 
  6.     for curA != nil { 
  7.         curA = curA.Next 
  8.         lenA++ 
  9.     } 
  10.     for curB != nil { 
  11.         curB = curB.Next 
  12.         lenB++ 
  13.     } 
  14.     var step int 
  15.     var fast, slow *ListNode 
  16.     // 請求長度差,并且讓更長的鏈表先走相差的長度 
  17.     if lenA > lenB { 
  18.         step = lenA - lenB 
  19.         fast, slow = headA, headB 
  20.     } else { 
  21.         step = lenB - lenA 
  22.         fast, slow = headB, headA 
  23.     } 
  24.     for i:=0; i < step; i++ { 
  25.         fast = fast.Next 
  26.     } 
  27.     // 遍歷兩個鏈表遇到相同則跳出遍歷 
  28.     for fast != slow { 
  29.         fast = fast.Next 
  30.         slow = slow.Next 
  31.     } 
  32.     return fast 

javaScript

  1. var getListLen = function(head) { 
  2.     let len = 0, cur = head; 
  3.     while(cur) { 
  4.        len++; 
  5.        cur = cur.next
  6.     } 
  7.     return len; 
  8. var getIntersectionNode = function(headA, headB) { 
  9.     let curA = headA,curB = headB, 
  10.         lenA = getListLen(headA), 
  11.         lenB = getListLen(headB); 
  12.     if(lenA < lenB) { 
  13.         [curA, curB] = [curB, curA]; 
  14.         [lenA, lenB] = [lenB, lenA]; 
  15.     } 
  16.     let i = lenA - lenB; 
  17.     while(i-- > 0) { 
  18.         curA = curA.next 
  19.     } 
  20.     while(curA && curA !== curB) { 
  21.         curA = curA.next
  22.         curB = curB.next
  23.     } 
  24.     return curA; 
  25. }; 

 

責任編輯:姜華 來源: 代碼隨想錄
相關推薦

2021-01-28 07:33:34

JavaScript鏈表數據

2021-03-10 08:42:19

Java數據結構算法

2021-07-13 07:52:03

Python數據結構

2021-07-15 06:43:12

Python數據結構

2017-03-01 13:58:46

Python數據結構鏈表

2022-09-26 07:56:53

AVL算法二叉樹

2022-09-21 07:57:33

二叉搜索樹排序二叉樹

2020-10-30 09:56:59

Trie樹之美

2020-12-31 05:31:01

數據結構算法

2020-10-21 14:57:04

數據結構算法圖形

2012-02-02 10:21:05

單鏈表nexthead

2023-03-08 08:03:09

數據結構算法歸并排序

2020-10-20 08:14:08

算法與數據結構

2021-03-11 08:53:20

Java數據結構算法

2020-10-12 11:48:31

算法與數據結構

2022-01-18 19:13:52

背包問題數據結構算法

2023-10-27 07:04:20

2021-08-03 10:24:59

數據跳躍鏈表結構

2021-12-10 11:27:59

數據結構算法單調遞增的數字

2009-08-11 14:43:42

C#數據結構與算法
點贊
收藏

51CTO技術棧公眾號

国产精品色午夜在线观看| 欧美电影一区二区三区| 久久精品国产精品国产精品污| 亚洲一级中文字幕| 高清电影在线免费观看| 久久中文娱乐网| 国产精品日日摸夜夜添夜夜av| 欧美狂猛xxxxx乱大交3| 久久99久久久精品欧美| 亚洲亚洲人成综合网络| 18成人在线| 天天综合网入口| 久久久综合色| 亚洲精品久久久久中文字幕二区| 我的公把我弄高潮了视频| 精品99又大又爽又硬少妇毛片| 中文精品在线| 日韩在线精品视频| 国产精品无码电影| 超碰国产精品一区二页| 日韩理论在线观看| 麻豆av福利av久久av| 国产乱人乱偷精品视频a人人澡| 国产精品毛片久久| 精品一区二区电影| 中文字幕在线视频一区二区| 一区二区三区短视频| 亚洲激情中文1区| 日韩亚洲视频在线| 免费看av毛片| 国产欧美一级| 亚洲社区在线观看| 色哟哟视频在线| 欧美电影免费观看高清完整| 一区二区日韩电影| 天天成人综合网| 国产日韩精品在线看| 99久久99久久精品免费看蜜桃| 日本精品在线视频 | 国产一区二区三区免费在线观看| 久久精品久久久久| 亚洲一二三四五| 亚洲国产一区二区久久| 在线免费观看视频一区| 久久人人爽人人爽人人av| 在线免费av网站| 欧美国产乱子伦| 99www免费人成精品| 91丨九色丨丰满| 亚洲麻豆av| 欧美激情精品久久久久久| 男人与禽猛交狂配| 亚洲激情中文在线| 久热在线中文字幕色999舞| 国产性生活毛片| 国产精品极品在线观看| 欧美三区在线观看| www.超碰com| 精品欧美一区二区三区在线观看| 亚洲欧美日本在线| 欧美少妇一级片| 麻豆影院在线观看| 亚洲三级在线免费观看| 欧美 国产 精品| 国产系列在线观看| 91在线精品一区二区三区| 国产精品视频福利| 亚洲怡红院av| 精品在线你懂的| 成人写真福利网| 国产精品丝袜黑色高跟鞋| 精品一区二区三区久久| 1769国产精品| 天堂网视频在线| 免费一级片91| 91国产视频在线播放| 制服.丝袜.亚洲.中文.综合懂色| 国产精品国产一区| 免费91在线视频| 亚洲精品视频网址| 91视频一区| 欧美成人一区在线| 日韩伦理在线视频| 视频一区在线播放| 成人美女av在线直播| 国产成人手机在线| 91美女福利视频| 亚洲精品日韩成人| 女人天堂av在线播放| 天天爽夜夜爽夜夜爽精品视频| 99re8这里只有精品| 超碰97国产精品人人cao| 狠狠躁夜夜躁人人爽天天天天97 | 尹人成人综合网| 国产成人短视频| 精品国产乱码一区二区三 | 国内精品久久久久久中文字幕| 日韩三级久久久| 黑丝一区二区三区| 国产精品成人观看视频国产奇米| 特级做a爱片免费69| 蜜桃久久精品一区二区| 鬼打鬼之黄金道士1992林正英| 在线观看一二三区| 不卡欧美aaaaa| 亚洲精品高清视频| 永久av在线| 亚洲成人免费av| 蜜臀一区二区三区精品免费视频 | 在线视频一区二区三| 欧美大片久久久| 亚洲精品456| 美日韩丰满少妇在线观看| 性色av免费观看| 国产a级毛片一区| 亚洲mv在线看| 九色porny丨入口在线| 欧美精品日韩精品| 三上悠亚ssⅰn939无码播放| 综合视频在线| 国产精品爽爽爽| 国产一区二区麻豆| 26uuu国产日韩综合| 日本丰满大乳奶| 78精品国产综合久久香蕉| 亚洲电影av在线| 成熟的女同志hd| 日产欧产美韩系列久久99| 国产日韩精品在线播放| 精品人妻一区二区三区三区四区| 丁香五精品蜜臀久久久久99网站 | 一级特黄录像免费看| 91色视频在线| 三区精品视频| 不卡av播放| 亚洲第一精品夜夜躁人人躁| 麻豆天美蜜桃91| 亚洲人成久久| av一区二区三区四区电影| 日本网站在线免费观看视频| 一区二区三区欧美日| 欧美成人高潮一二区在线看| 精品成人18| 日韩经典一区二区三区| 国产一级免费av| 国产成人综合亚洲网站| 国产成人三级视频| gogo大尺度成人免费视频| 在线视频精品一| 波多野结衣二区三区| 久久久精品蜜桃| 黄色国产精品视频| 中文字幕精品影院| 国产aⅴ夜夜欢一区二区三区| 国产精品国产一区二区三区四区| 成人av手机在线观看| 国产精品久久久久久久乖乖| av成人资源网| 97在线视频精品| 你懂的在线播放| 欧美这里有精品| 久久av红桃一区二区禁漫| 精品一区二区在线观看| 99精品一区二区三区的区别| 疯狂欧洲av久久成人av电影 | 少妇一级淫免费观看| 亚洲激情女人| 欧美aaaaa喷水| av亚洲一区| 欧美成人免费大片| 亚洲av无码国产精品久久不卡| 久久精品水蜜桃av综合天堂| 国产性生交xxxxx免费| 国产亚洲一区二区三区啪| 国内精品久久久久影院 日本资源| 91久久久久国产一区二区| 91网站在线播放| 青青草精品视频在线观看| 999国产精品999久久久久久| 波多野结衣久草一区| 久草在线中文最新视频| 亚洲人成自拍网站| 一区二区国产欧美| 亚洲综合免费观看高清完整版在线| 韩国视频一区二区三区| 欧美激情国产在线| 国产精品免费一区二区三区在线观看| 免费在线毛片网站| 精品免费国产二区三区| 7799精品视频天天看| 国产精品高潮久久久久无| 欧洲成人午夜精品无码区久久| 亚洲精品成人无限看| 国产精品羞羞答答| 青春草在线视频| 日韩欧美国产综合| 一级一片免费看| 亚洲三级在线观看| 97人妻精品一区二区免费| 国产精品一页| 天天成人综合网| 羞羞色国产精品网站| 91精品在线国产| 伊人久久国产| 久精品免费视频| 国产三级视频在线看| 精品国产乱码久久久久久免费| 精品无码一区二区三区电影桃花| 成人中文字幕合集| 成年网站在线播放| 一区二区三区国产在线| 日本免费在线视频观看| 久久91麻豆精品一区| 999在线免费观看视频| 久久野战av| 8x海外华人永久免费日韩内陆视频| 熟妇人妻av无码一区二区三区| 婷婷开心激情综合| 51精品免费网站| 国产精品一品二品| 国产亚洲黄色片| 91精品国产视频| 日韩国产一区久久| 欧美一级全黄| 国产精品国产三级国产专区53| 1024在线看片你懂得| 北条麻妃99精品青青久久| 精品99又大又爽又硬少妇毛片| 在线一区二区三区| 中日韩黄色大片| 亚洲成人免费视频| 免费在线视频观看| 亚洲女同女同女同女同女同69| 极品白嫩的小少妇| 久久综合亚州| www.爱色av.com| 影音先锋在线一区| 日韩wuma| 久久91麻豆精品一区| 久久久亚洲综合网站| 另类一区二区| 日韩av色综合| 伊人久久精品一区二区三区| 国产91精品久久久久久久| 变态调教一区二区三区| 欧美国产日韩精品| 乱插在线www| 欧美精品www| 欧美黄色视屏| 一区二区三区国产在线观看| 青青草在线免费观看| 日韩精品久久久久久久玫瑰园| ,亚洲人成毛片在线播放| 欧美三级三级三级爽爽爽| 尤物视频免费观看| 在线看不卡av| 亚洲视频一区二区三区四区| 欧美日韩亚洲综合一区| 亚洲天堂视频网| 在线播放国产精品二区一二区四区| 日韩乱码人妻无码中文字幕| 懂色av影视一区二区三区| 久久99精品波多结衣一区| 日韩欧美亚洲综合| 精品一区二区三区人妻| 国产精品免费视频网站| 亚洲一区二区观看| 国产日韩欧美在线一区| 午夜激情福利电影| 久久网这里都是精品| 国产伦理片在线观看| 国产精品高潮久久久久无| 精品欧美一区二区久久久久| 艳妇臀荡乳欲伦亚洲一区| 精品欧美一区二区三区免费观看 | 亚洲成色999久久网站| 亚洲免费不卡视频| 亚洲免费一在线| 熟妇人妻中文av无码| 国产亚洲日本欧美韩国| 日本美女在线中文版| 亚洲人在线视频| 免费av网站在线看| 久久久久国产视频| 日韩精品99| 日韩**中文字幕毛片| 538视频在线| 国产精品电影网站| 秋霞午夜一区二区三区视频| 久久久精彩视频| 亚洲欧美综合久久久| 青青草成人免费在线视频| 蜜臀av一区二区三区| 中文字幕视频观看| 国产午夜精品美女毛片视频| 三级av在线免费观看| 日韩欧美在线播放| 国产夫绿帽单男3p精品视频| 亚洲精品自拍视频| 超碰个人在线| 国产成人精品在线观看| 精品国产第一国产综合精品| 欧美不卡福利| 欧美日一区二区在线观看| 精品999在线| www成人在线观看| 91在线播放观看| 91成人看片片| 色窝窝无码一区二区三区| 久久久国产成人精品| 国产精品迅雷| av在线不卡一区| 欧美国产美女| 国语对白做受xxxxx在线中国| 久久久久国产精品一区二区| 亚洲视频在线不卡| 国产婷婷色一区二区三区在线| 国产无遮挡在线观看| 欧美日韩国产在线播放| 99国产精品久久久久99打野战| 日韩久久精品一区| 欧美jizz18hd性欧美| 国产精品爱啪在线线免费观看| a成人v在线| 97视频中文字幕| 91日韩视频| 一起操在线视频| 欧美激情一区在线观看| 欧美性猛交bbbbb精品| 精品国产乱码久久久久久影片| 免费在线国产| 5278欧美一区二区三区| 最新国产一区二区| 日韩精品第1页| 国产裸体歌舞团一区二区| 国产传媒在线看| 91久久精品午夜一区二区| 亚洲av片一区二区三区| 久久久之久亚州精品露出| 成人软件在线观看| 久久免费一区| 久久国产成人| 超碰97人人干| 色94色欧美sute亚洲线路一ni | 国产伦视频一区二区三区| 综合天堂久久久久久久| 色哟哟免费视频| 国产性天天综合网| 无码人妻一区二区三区免费| 亚洲精品视频中文字幕| 性欧美18~19sex高清播放| 国产专区一区二区三区| 国产欧美日本| 中文字幕国产专区| 色欧美乱欧美15图片| 97人人在线| 91久久精品国产91性色| 午夜国产精品视频免费体验区| 青青在线视频免费| 中文乱码免费一区二区| 在线免费观看日韩视频| 日韩精品中文字幕久久臀| a免费在线观看| 成人av男人的天堂| 午夜在线视频一区二区区别 | 91美女蜜桃在线| 狠狠人妻久久久久久| 欧美成人一区二区| av美女在线观看| 欧美凹凸一区二区三区视频| 精品91在线| 性色av浪潮av| 亚洲 欧美综合在线网络| 你懂的视频在线播放| 国产欧美一区二区三区久久人妖| 九九久久婷婷| 久久久久xxxx| 婷婷久久综合九色综合伊人色| 亚洲国产精品18久久久久久| 136fldh精品导航福利| 色综合久久一区二区三区| 91淫黄看大片| 亚洲精品免费在线观看| 好吊视频一区二区三区| 欧美丰满老妇厨房牲生活 | 欧美天堂亚洲电影院在线观看| 五月天激情播播| 黄色成人在线免费| 午夜在线免费观看视频| 国产精华一区二区三区| 日韩电影在线看| 超碰手机在线观看| 亚洲人永久免费| 国产精品15p| 欧美成人福利在线观看| 午夜精品久久久久久久99水蜜桃| 天天操天天操天天| 国产又爽又黄的激情精品视频| 99久久精品国产亚洲精品| 性生生活大片免费看视频|