時間限制: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的每個結點。不過感覺不如解...