-
题目:
编写一个程序,找到两个单链表相交的起始节点。
链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ -
Code:
既然是相交的链表则说明必然最后一个节点的地址是相同的。所以先遍历一遍判断尾节点是否一致,最后看哪个链表长,就让其指针先走多出来的长度,然后一起走,地址相同的时候就是相交节点/** * 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){ if(headA == NULL || headB == NULL) return NULL; int len = 0; ListNode* p1 = headA; ListNode* p2 = headB; while(p1){ len++; p1 = p1->next; } //cout<<" len"<<len<<endl; while(p2){ len--; p2 = p2->next; } if(p1 != p2) return NULL; p1 = (len > 0) ? headA : headB; p2 =(p1 == headA) ? headB : headA; len = abs(len); while(len != 0){ p1 = p1->next; len--; } while(p1 != p2){ p1 = p1->next; p2 = p2->next; } return p1; } };
【LeetCode 160】相交链表
最新推荐文章于 2024-07-25 17:17:27 发布