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

2021-07-15 23:55:33 字數 869 閱讀 3758

時間限制:1秒

空間限制:32768k

本題知識點: 鍊錶

題目描述

#include

using namespace std;

struct listnode

};//方法一:先對齊結尾後,從前往後比較結點

class solution

while( p2)

//對齊尾部,從短的頭部開始比較

p1=phead1;p2=phead2; //初始化

if(length1>length2)

}else

}//找到比較位置,開始比較

while(p1 && p2)

else

}return result;

}};listnode* creatlist(int

*array, int size)

return listhead;

}int main()

;}

如何設計測試用例的公共集。

即需要同時設計兩個鍊錶

首次提交,提示未在規定時間內完成,是不是演算法有環?

測試表明無環。是因為最後乙個迴圈沒有加break

其他方法,如用兩個棧儲存節點。

或者將第乙個鍊錶尾和第二個煉表頭相連,採用1步2步追趕法找交點

或者將第乙個鍊錶尾和第二個煉表頭連線後,採用斷尾法,但會破壞鍊錶結構。

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

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

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

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

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

輸入兩個鍊錶,找出它們的第乙個公共結點。leetcode對應題目 160.相交鍊錶 題目解答 總結 沒什麼難度,計算出兩個鍊錶長度,分別移動就可以了。還想到一種用set的性質來做,反正兩者有乙個公共節點,就是重合部分,把list1全部新增到set,再在set中查詢list2的每個結點。不過感覺不如解...