日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode面试题 02.07. 链表相交

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode面试题 02.07. 链表相交 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:題目


二:思路

1.這道題我們是需要找到一個結點,并且從這個結點往后的結點都相等
2.我們需要將兩個鏈表 右對齊
3.然后將長鏈表的指針移動到和短鏈表頭結點相同的位置
4.接下來就是比較指針,當一個指針相同也就意味著往后的結點的數值也相等

三:上碼

/*** 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) {/**思路:1.這道題我們是需要找到一個結點,并且從這個結點往后的結點都相等2.我們需要將兩個鏈表 右對齊3.然后將長鏈表的指針移動到和短鏈表頭結點相同的位置4.接下來就是比較指針,當一個指針相同也就意味著往后的結點的數值也相等*/ListNode* node1 = headA;ListNode* node2 = headB;//求取鏈表的長度是為了右對齊int lenA = 0;int lenB = 0;while(node1 != NULL){//求鏈表A的長度node1 = node1->next;lenA++;}while(node2 != NULL){//求取鏈表B的長度node2 = node2->next;lenB++;}node1 = headA;//因為上方的操作讓node1,node2已經指向了NULLnode2 = headB;//我們讓node1 lenA為最長的長度if(lenB > lenA){swap(lenA,lenB);swap(node1,node2);}int poor = lenA - lenB;//讓長鏈表的指針和短鏈表首節點位置相同 即是(右對齊)while(poor--){node1 = node1->next;}//尋找相同的指針(只要指針相同那么指針往后的結點所對應的數值也相等)while(node1 != NULL){if(node1 == node2){return node1;}node1 = node1->next;node2 = node2->next;}return NULL;} };


渣渣杰又水了一道 這個題有意思的是我們需要理解 比較的是指針相等(當指針相等的時候我們就可以知道其往后的數值也就相等了),這可比數組牛逼多了,數組還得一個一個比較,鏈表yyds!!!

總結

以上是生活随笔為你收集整理的leetcode面试题 02.07. 链表相交的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。