鍊錶操作 求兩個鍊錶的第乙個公共節點

2021-10-13 21:06:31 字數 828 閱讀 1596

牛客: 兩個鍊錶的第乙個公共節點

分別求兩個單鏈表的長度,len1 和 len2,計算長度差 len

然後讓長的鍊錶先走 len 步,此時p1 和 p2 鍊錶剩餘長度相同p1 和 p2 同時走,直到 p1 == p2 ,若有共同節點,p1 != null,否則 p1 為 null

public

class

solution

else

// 同時走

while

(phead1 != phead2)

// 有共同節點,phead1 != null, 否則 phead1 == null

return phead1;

}// 計算鍊錶長度

public

intgetlen

(listnode p)

return len;

}// 長的鍊錶先走 len 步

public listnode go

(listnode p,

int len)

return p;

}}

p1 和 p2 同時走

p1 走完接著 p2 頭部走,同理 p2 走完接著 p1 頭部走

直到 p1 == p2,若有共同點,p1 != null(中間停止),否則 p1 為 null (走到尾部)

public listnode findfirstcommonnode

(listnode phead1, listnode phead2)

return p1;

}

兩個鍊錶求第乙個公共交點

輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 definition for singly linked list.class listnode public class solution listnode meetno...

兩個鍊錶第乙個公共節點

先讓長的鍊錶的指標先走長的之差的步數,兩個再一起走,如果相遇就是第乙個公共節點 如果沒交點,就都走到空 struct listnode class solution while pl2 null 復位指標到頭節點 pl1 phead1 pl2 phead2 int dif len 0 if len1...

鍊錶問題 兩個鍊錶的第乙個公共節點

題目 輸入兩個鍊錶,找出它們的第乙個公共結點 分析 對於這個問題有三種思路 1 蠻力演算法,當遍歷到乙個節點時,就在另外乙個鍊錶上順序遍歷,並且判斷是否相等,如果想等就是第乙個重合的節點,對於兩個長度分別為m和n的鍊錶,所需要的時間為o m n 實現如下 struct listnode 蠻力解法 l...