36、兩個鏈表的第一個公共節(jié)點

題目描述
輸入兩個鏈表,找出它們的第一個公共結點。

思路:
分別統(tǒng)計兩個鏈表的長度,求出差值。設置兩個指針,分別指向兩個鏈表的頭結點,然后長鏈表的指針,先移動差值的距離,之后兩個指針同步向前移動,找第一個相等的節(jié)點。

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        //計算鏈表1的長度
        ListNode p1 = pHead1;
        int size1 = 0;
        while(p1!=null){
            size1++;
            p1=p1.next;
        }
        
        ListNode p2=pHead2;
        int size2 = 0;
        //計算鏈表2的長度
        while(p2!=null){
            size2++;
            p2=p2.next;
        }
        
        p1=pHead1;
        p2=pHead2;
        int offset = 0;
        if(size1>size2){
            offset = size1-size2;
            while(offset>0){
                p1=p1.next;
                offset--;
            }
        }else if(size2>size1){
            offset = size2-size1;
            while(offset>0){
                p2=p2.next;
                offset--;
            }
        }
        
        ListNode p = null;
        while(p1!=null&&p2!=null){
            if(p1==p2){
                p=p1;
                break;
            }
            p1=p1.next;
            p2=p2.next;
        }
        
        return p;
        
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容