題目:輸入兩個鍊錶,找出它們的第乙個公共結點。
思路:首先要明白一點:如果兩個單向鍊錶有公共結點,那麼這兩個鍊錶從某一結點開始,它們的next都指向同乙個結點,及公共結點一定出現在鍊錶的 尾部。
兩種思路:
第一種是將兩個鍊錶的結點放入棧中,我們依次比較棧頂元素,找出公共結點出現的最後乙個元素。
第二種是將直接遍歷兩個鍊錶,得到其長度,長度相減得到鍊錶的移動次數,移動之後再比較是否是公共結點。
**:
/*public class listnode
}*/public classsolution
intcount1 = 0;
listnode p1 = phead1;
while(p1 !=null)
intcount2 = 0;
listnode p2 = phead2;
while(p2 !=null)
intflag=0;
flag = count1-count2;
if(flag<=0)
while(phead1 != phead2)
returnphead1;
}if(flag>0)
while(phead1 != phead2)
returnphead1;
}return null;
}}
劍指offer 37兩個鍊錶的第乙個公共結點
package listtest.listintersection 查詢兩個鍊錶的第乙個交點 兩個有交點的鍊錶自交點結點開始到最後乙個結點都是相同的。如果能從最後乙個結點遍歷到最後乙個相同的結點則為交點。但是單鏈表只能從頭結點開始遍歷,所以我們要考慮兩個鍊錶的長度是不是一樣的。如果乙個鍊錶比另外乙個...
劍指offer 合併兩個鍊錶
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。新建乙個節點作為head,依次遍歷兩個陣列 時間複雜度 o n 空間複雜度 o 1 coding utf 8 class listnode def init self,x self.val x self.ne...
劍指offer 兩個鍊錶的合併
我怕是要丸,鍊錶合併不會寫了!題目 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,合成後的鍊錶滿足單調遞增。首先遞迴方法 struct listnode listnode reverselist listnode phead first next last return first 非遞迴 ty...