题解 | #判断链表中是否有环#
判断链表中是否有环
https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
有环问题第一思考快慢双指针
快指针每次前进2,慢指针每次前进1,当两者相遇fast==slow则成环,当快指针指向nullptr则为false出口
fast->next->next
slow->next
需要额外注意的是,链表成环必须要满足2个及以上节点数量
class Solution {
public:
bool hasCycle(ListNode *head) {
//判断环,直接思考快慢指针
if(head==nullptr||head->next==nullptr){
return false;
}
ListNode* fast = head;
ListNode* last = head;
while(1){
if(fast==nullptr||last==nullptr){
return false;
}
if(fast->next){
fast = fast->next->next;
}else{
return false;
}
last = last->next;
if(fast == last){
return true;
}
}
}
};