劍指offer36-兩個鏈表的第一個公共結點

劍指offer36-兩個鏈表的第一個公共結點

最近全國疫情嚴重,待在家裏沒事幹,馬上又要準備春招了,最近刷刷題,記錄一下!再說一句,武漢加油,大家出門記得戴口罩!

1、題目描述

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

2、思路

將兩個鏈表拼接起來。 將兩個鏈表進行拼接,一個鏈表1在前鏈表2在後,另一個鏈表2在前鏈表1在後,則合成的兩個鏈表一樣長,然後同時遍歷兩個鏈表,就可以找到公共結點,時間複雜度同樣爲O(m+n)。

3、代碼

public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        //將兩個鏈表拼接起來。 將兩個鏈表進行拼接,一個鏈表1在前鏈表2在後,另一個鏈表2在前鏈表1在後,
        //則合成的兩個鏈表一樣長,然後同時遍歷兩個鏈表,就可以找到公共結點,時間複雜度同樣爲O(m+n)。
        if(pHead1==null || pHead2==null)
            return null;
         ListNode head1=pHead1,head2=pHead2;
        while(head1!=head2){
            head1=head1==null?pHead2:head1.next;
            head2=head2==null?pHead1:head2.next;
        }
        return head1;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章