題目描述
輸入兩個鍊錶,找出它們的第乙個公共結點。
有公共節點的兩個鍊錶在公共節點匯合後,後面的節點均相同,為y型。
方法一:消除長度差後,兩者到公共節點距離相同。時間複雜度o(m+n)。
方法二:用兩個指標分別遍歷總鍊錶,指標將在重合點或者末尾處相遇。時間複雜度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),空間複雜度o(m+n)/*
struct listnode
};*/
class solution
return p1;
}};
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 ...