Leetcode160 相交鍊錶

2021-08-28 21:02:19 字數 980 閱讀 5747

解法一:用乙個集合去判斷

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 記憶體。用兩個指標在兩個鍊錶中分別遍歷,有相同的則輸出 因為只遍歷了一遍,所以時間複雜度為...