給定一個單鏈表如何高效的找到鏈表的中點,要求算法復雜度O(N),如果讀者遇到過這樣的問題,那麼這個問題就迎刃而解了,驗證鏈表是否有環的問題,使用快慢指針變量鏈表,同理中點問題也可以使用快慢指針實現,慢指針一次移動一個節點,快節點一次移動兩個節點,快指針到達終點時,慢指針指向中點。
LinkNode *FindMid(LinkNode *p){
if(p == NULL){
return NULL;
}
LinkNode *fast = p;
LinkNode *slow = p;
while(fast && fast->next){
fast = fast->next->next;
slow = slow->next;
}
return slow;
}