解法一:用乙個集合去判斷
class solution
sets;
listnode *tmp1 = heada;
listnode *tmp2 = headb;
while(tmp1)
while(tmp2)
tmp2 = tmp2->next;
}return nullptr;
}};
解法二:
先遍歷一遍兩個鍊錶得到的長度差n,然後讓長鍊表先走n步,之後一起走,如果有交點必相遇。
class solution
int len1 = 0;
int len2 = 0;
listnode *tmp1 = heada;
listnode *tmp2 = headb;
while(tmp1)
while(tmp2)
if(len1 > len2)
}if(len1 < len2)
}while(heada && headb)
heada = heada->next;
headb = headb->next;
}return nullptr;
}};
解法三:當乙個鍊錶到達尾部後,跳到另外乙個鍊錶的頭部。這樣如果相交則一定會相遇。
如果發生了第三次鍊錶觸尾,為說明沒有交點
class solution
int cnt = 0;
listnode *tmp1 = heada;
listnode *tmp2 = headb;
while(cnt < 3)
if(!tmp1->next)
else
if(!tmp2->next)
else
}return nullptr;
}};
LeetCode160 相交鍊錶
編寫乙個程式,找到兩個單鏈表相交的起始節點。例如,下面的兩個鍊錶 在節點 c1 開始相交。注意 如果兩個鍊錶沒有交點,返回 null.在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。程式盡量滿足 o n 時間複雜度,且僅用 o 1 記憶體。解題思路 1.找到兩個鍊錶長度差n後...
LeetCode 160 相交鍊錶
編寫乙個程式,找到兩個單鏈表相交的起始節點。例如,下面的兩個鍊錶 a a1 a2 c1 c2 c3 b b1 b2 b3 在節點 c1 開始相交。注意 如果兩個鍊錶沒有交點,返回 null.在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。程式盡量滿足 o n 時間複雜度,且僅...
leetcode 160 相交鍊錶
編寫乙個程式,找到兩個單鏈表相交的起始節點。注意 如果兩個鍊錶沒有交點,返回 null。在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。程式盡量滿足 o n 時間複雜度,且僅用 o 1 記憶體。用兩個指標在兩個鍊錶中分別遍歷,有相同的則輸出 因為只遍歷了一遍,所以時間複雜度為...