[leetcode] Intersection of Two Linked Lists

来源:互联网 发布:sql数据仓库培训 编辑:程序博客网 时间:2024/06/16 04:59

Intersection of Two Linked Lists

双指针,求长度,作差,第一个相等的节点即为最早的公共节点。

/** * 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 *la=headA;        ListNode *lb=headB;        int sa=0,sb=0;        while(la!=NULL){            la=la->next;            sa++;        }        while(lb!=NULL){            lb=lb->next;            sb++;        }                int dis=0;        if(sa<=sb){            dis=sb-sa;            la=headA;//point to headA            lb=headB;            while(dis--){                lb=lb->next;            }        }else{            dis=sa-sb;            la=headA;            lb=headB;//point to headB            while(dis--){                la=la->next;            }        }                while(la!=lb){            la=la->next;            lb=lb->next;        }        return la;    }};


0 0
原创粉丝点击