LeetCode160. 相交連結串列
阿新 • • 發佈:2018-12-11
編寫一個程式,找到兩個單鏈表相交的起始節點。
/** * 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) { // ListNode*head1=headA,*head2=headB; // while(head1) // { // while(head2) // { // if(head1 == head2) // { // return head1; // } // else // { // head2 = head2->next; // } // } // head2 = headB; // head1 = head1->next; // } // return NULL; // } //求出連結串列長度 int getListLength(ListNode *head) { int len = 0; ListNode *tmp = head; while(tmp) tmp = tmp->next,len++; return len; } //判斷交叉節點 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *a = headA, *b = headB; int ab = getListLength(a)-getListLength(b); if(ab > 0) { while(ab) a = a->next, ab--; } else if(ab < 0) { while(ab) b = b->next, ab++; } while(a && b) { if(a->val == b->val) return a; a = a->next; b = b->next; } return NULL; } };