算法面試題 - 找出兩個單向鏈表相交的位置

題目:

   找出兩個單向鏈表相交的位置

   請考慮周全


提示:

  除了普通情況外,還要考慮環以及2者首尾相連。



參考答案:

最普通的情況下,可以這樣做:

  1. 算出兩個鏈表長度。
  2. 假設長度差爲n,掃描長的鏈表n個節點。
  3. 同時掃描兩個鏈表,碰到第一個相同的就是公共節點。


如果有環呢?(別人的方法)

  判斷有沒環 完了如果一個有,一個沒有, 不會重疊
  都沒環上面的方法如上,找長度差
  都有環就重複環檢測,然後重合的點往前走,要是再回到原來點以前碰到了另一個鏈表的重合點就說明有環

  找重合點很簡單,找到環開始點,如果兩個鏈表的環開始點不一樣,那說明重合的是整個環,否則,重複沒環的情況


有環的話,還可以(我的方法):

  找到任意環中的點,以此作爲終點,應用沒有環的方法


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章