面試題52 兩個鍊錶的第乙個公共節點

2021-08-26 11:59:11 字數 1033 閱讀 7343

題目描述

輸入兩個鍊錶,找出它們的第乙個公共結點。

有公共節點的兩個鍊錶在公共節點匯合後,後面的節點均相同,為y型。

方法一:消除長度差後,兩者到公共節點距離相同。時間複雜度o(m+n)。

/*

struct listnode

};*/

class solution

return len;

}listnode* findfirstcommonnode( listnode* phead1, listnode* phead2)

for(int i = 0; i < lendif; i++)

plong = plong->next;

while(plong != nullptr && pshort != nullptr && plong != pshort)

listnode* pcommon = plong;

return pcommon;

}};

方法二:用兩個指標分別遍歷總鍊錶,指標將在重合點或者末尾處相遇。時間複雜度o(m+n)。

/*

struct listnode

};*/

class solution

return p1;

}};

方法三:利用輔助棧從鍊錶尾部向前遍歷,時間複雜度o(m+n),空間複雜度o(m+n)

struct listnode 

};*/

class solution

while(p2 != nullptr)

listnode* tmp;

if(s1.top() != s2.top())

return

nullptr;

while(!s2.empty() && !s1.empty() && s1.top() == s2.top())

return tmp;

}};

面試題52 兩個鍊錶的第乙個公共節點

面試題52 兩個鍊錶的第乙個公共節點 題目 輸入兩個鍊錶,找出它們的第乙個公共結點 思路 首先遍歷兩個鍊錶得到它們的長度,比較長短。第二遍,在較長的鍊錶上先走若干步,接著同時在兩個鍊錶上遍歷 找到的第乙個相同的節點就是它們的第乙個公共節點 classlistnode6 publicclassno52...

面試題52 兩個鍊錶的第乙個公共節點

輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式 顯示的,保證傳入資料是正確的 考察點 時間空間複雜度分析 鍊錶程式設計。思路 一開始想到的是遍歷其中一條鍊錶,找到乙個節點,就去另一條鍊錶中去找相同的,這樣的複雜度比較高。所以借用前文的思路,既然是找...

面試題52 兩個鍊錶的第乙個公共節點

輸入兩個鍊錶,找出它們的第乙個公共節點。方法 雙指標法 比較簡單,考研也練習過 public listnode getintersectionnode listnode heada,listnode headb while pb null pa heada pb headb int gofirst ...