劍指offer36 兩個鍊錶的第乙個公共子節點

2022-08-19 05:36:12 字數 840 閱讀 8076

輸入兩個鍊錶,找出它們的第乙個公共結點。(注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的)

因為公共節點之後的資料都是一樣的,所以如果兩個鍊錶不一樣長,如果存在公共尾,那麼長的鍊錶前一段一定是不匹配的

/*

struct listnode

};*/

class

solution

return p1;

*///

兩個鍊錶的長度

int length1=getlength(phead1);

int length2=getlength(phead2);

listnode* pnode1=phead1;

listnode* pnode2=phead2;

//因為必有相同的尾 所以把長的先往後移動差值

int lengthdif=0

;

if(length1>=length2)

if(length1//前面捨棄的必定不會有相同的

//移動完之後 並不是一定就是這麼長 還得找到開始相同的地方

//while((pnode1!=nullptr)&&(pnode2!=nullptr)&&(pnode1->val!=pnode2->val))

//不管是null 還是 正常值 都可返回

listnode* pcommonnode=pnode1;

return

pcommonnode;

}int getlength(listnode*phead)

return

length;

}};

劍指offer 36 兩個鍊錶的第乙個公共結點

題目描述 輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 實現 public class listnode public class solution return nhead1 分析 最直接的思路是遍歷一條鍊錶,並將每...

劍指offer 36 兩個鍊錶的第乙個公共結點

36.兩個鍊錶的第乙個公共結點 輸入兩個鍊錶,找出它們的第乙個公共結點。兩個指標同時遍歷兩個鍊錶,每個指標遍歷完當前鍊錶繼續遍歷另一鍊錶,當兩個指標相等或者某個指標為空時退出迴圈 定義兩個指標,第一輪讓兩個到達末尾的節點指向另乙個鍊錶的頭部,最後如果相遇則為交點 假定 p1 指向表 a p2 指向表...

劍指offer36 兩個鍊錶的第乙個公共結點

輸入兩個鍊錶,找出它們的第乙個公共結點。方法一 用兩個指標同時從兩個鍊錶的表頭開始走,當走到自己的鍊錶結尾的時候開始從另乙個鍊錶的表頭開始向後走。終止條件就是兩個指標第一次相遇。此時指標位置即為所求。兩個鍊錶的節點和是一定的,所以兩個指標一定可以同時遍歷完兩條鍊錶,即在最後時刻兩個指標一定是重合的 ...