36 兩個鍊錶的第乙個公共結點

2021-09-24 16:25:36 字數 615 閱讀 5616

輸入兩個鍊錶,找出它們的第乙個公共結點。

leetcode對應題目:160.相交鍊錶

題目解答

總結:沒什麼難度,計算出兩個鍊錶長度,分別移動就可以了。還想到一種用set的性質來做,反正兩者有乙個公共節點,就是重合部分,把list1全部新增到set,再在set中查詢list2的每個結點。不過感覺不如解法1。

解答1:計算出長度分別向後遍歷

/*

struct listnode

};*/

class solution

temp = phead2;

int len2 = 0;

while(temp)

if(len1 > len2)

else

while(phead1 != phead2)

return phead1;

}};

解法2:利用set不重複的性質;或者弄兩個set裝,求交。

class solution 

while(headb)

headb = headb->next;

}return null;

}};

36 兩個鍊錶的第乙個公共結點

時間限制 1秒 空間限制 32768k 本題知識點 鍊錶 題目描述 include using namespace std struct listnode 方法一 先對齊結尾後,從前往後比較結點 class solution while p2 對齊尾部,從短的頭部開始比較 p1 phead1 p2 ...

36 兩個鍊錶的第乙個公共結點

題目 輸入兩個鍊錶,找出他們的第乙個公共結點 思路 公共結點是指結點值相同,結點指向的下乙個結點也相同。如果下乙個結點也相同,那麼下乙個結點的值記憶下乙個結點指向的結點也相同。即,從此公共結點開始,兩個鍊錶相遇,且之後的結點都是相同的,也就是重合了。因為結點位址相同,結點值相同,指向的下乙個節點的位...

36 兩個鍊錶的第乙個公共結點

因為兩個鍊錶不一定等長,所以先求出兩個鍊錶的長度。然後求差x,較長的鍊錶先走x部,然後開始比較兩個鍊錶,當遇到相同的結點則返回,一直未遇到則返回null public class listnode public class solution while l2 null if count1 count...