輸入兩個鍊錶,找出它們的第乙個公共結點。(注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的)
因為公共節點之後的資料都是一樣的,所以如果兩個鍊錶不一樣長,如果存在公共尾,那麼長的鍊錶前一段一定是不匹配的
/*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 兩個鍊錶的第乙個公共結點
輸入兩個鍊錶,找出它們的第乙個公共結點。方法一 用兩個指標同時從兩個鍊錶的表頭開始走,當走到自己的鍊錶結尾的時候開始從另乙個鍊錶的表頭開始向後走。終止條件就是兩個指標第一次相遇。此時指標位置即為所求。兩個鍊錶的節點和是一定的,所以兩個指標一定可以同時遍歷完兩條鍊錶,即在最後時刻兩個指標一定是重合的 ...