輸入兩個鍊錶,找出它們的第乙個公共結點。(注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的)
由於單鏈表中節點只能有乙個next指標,所以兩個單鏈表相交,只能是y型的形狀,兩者的尾部重疊,第乙個重疊的節點就是我們要找的第乙個公共節點。
假設鍊錶1的長度為a + c,鍊錶2的長度為b + c,c是兩者的共同部分的長度。現在將兩個鍊錶按照不同順序拼接,得到兩個長度相同的新鍊錶:a+c+b+c、b+c+a+c,然後從頭依次遍歷,則兩個新鍊錶第一次相同的節點就是第乙個共同節點。
/*
public class listnode
}*/public class solution
return l1;
}}
兩個單鏈表的第乙個公共節點
題目 求兩個單鏈表的第乙個公共子節點。思路 我們可以先遍歷兩個單鏈表得到長度,然後求得兩個鍊錶長度的差值,然後讓長的那個鍊錶先走到差值長度位置,然後兩個鍊錶再同時遍歷,直到找到第乙個公共節點。struct listnode int getlistlength listnode head return...
求兩個單鏈表的第乙個公共節點
求兩個單鏈表的第乙個公共節點。分析 兩個鍊錶的第乙個公共節點之後的部分相同 完全重合 1.當兩個單鏈表a b長度相等時,對兩個單鏈表同時進行遍歷,若節點不相等,則指標分別指向下乙個節點 當a鍊錶的指標等於b鍊錶的指標時,該節點即為第乙個公共節點。2.當兩個單鏈表a b長度不相等時,假設b為兩個鍊錶中...
兩個單鏈表第乙個公共結點
基本概念 兩個鍊錶是單鏈表,如果兩個鍊錶有公共節點,那麼這兩個鍊錶從某一節點開始,它們都指向同乙個節點,之後它們所有的節點都是重合的,不可能再出現分叉。所以拓撲形狀看起來是y型。演算法思想 首先遍歷兩個鍊錶得到它們的長度,就能知道哪個鍊錶比較長,以及長的鍊錶比短的鍊錶多幾個節點。在第二次遍歷的時候,...