輸入兩個鍊錶,找出它們的第乙個公共結點。(注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式
顯示的,保證傳入資料是正確的)
考察點:時間空間複雜度分析;鍊錶程式設計。
思路:一開始想到的是遍歷其中一條鍊錶,找到乙個節點,就去另一條鍊錶中去找相同的,這樣的複雜度比較高。
所以借用前文的思路,既然是找共同節點,那麼兩條鍊錶就是y型。那麼讓長鏈條先走差值的步數,
之後兩條鏈一塊走,直到走到共同節點。
struct listnode
};class solution
return count;
}listnode* findfirstcommonnode(listnode* phead1, listnode* phead2)
else
for (int i = 0; i < len; i++)//讓長鏈先走個差值的步數
while (plonglist != null&&pshortlist!=null)//不為空就同步走
else//沒找到就接著走
}return null;}};
面試題52 兩個鍊錶的第乙個公共節點
題目描述 輸入兩個鍊錶,找出它們的第乙個公共結點。有公共節點的兩個鍊錶在公共節點匯合後,後面的節點均相同,為y型。方法一 消除長度差後,兩者到公共節點距離相同。時間複雜度o m n struct listnode class solution return len listnode findfirs...
面試題52 兩個鍊錶的第乙個公共節點
面試題52 兩個鍊錶的第乙個公共節點 題目 輸入兩個鍊錶,找出它們的第乙個公共結點 思路 首先遍歷兩個鍊錶得到它們的長度,比較長短。第二遍,在較長的鍊錶上先走若干步,接著同時在兩個鍊錶上遍歷 找到的第乙個相同的節點就是它們的第乙個公共節點 classlistnode6 publicclassno52...
面試題52 兩個鍊錶的第乙個公共節點
輸入兩個鍊錶,找出它們的第乙個公共節點。方法 雙指標法 比較簡單,考研也練習過 public listnode getintersectionnode listnode heada,listnode headb while pb null pa heada pb headb int gofirst ...