leetcode面试题 02.07. 链表相交
生活随笔
收集整理的這篇文章主要介紹了
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. 链表相交的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode24. 两两交换链表中的
- 下一篇: leetcode142. 环形链表 II