力扣141题,判断链表里面是否有环
总是不能够考虑到所有的情况,都快吐了
总结:1.判断链表是否成环,主要看下一个节点是否为NULL,2.快慢指针
1.首先没有节点、只有一个节点,肯定没有环
2.有两个节点,如果没有环,head->next->next==NULL;所以1,2两种情况可以放到一起判断
3.两个及两个以上节点,如果快慢指针相遇,那就是有环,如果下一个节点或者下下一个节点为NULL,就说明没有环,退出循环,返回false
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */
class Solution {
public:
bool hasCycle(ListNode *head)
{
//如果链表没有元素或者只有一个元素或者只有两个元素
if(head==NULL||head->next==NULL||head->next->next==NULL)
return false;
//链表有两个及以上的元素
ListNode* fast=head->next->next;
ListNode* slow=head;
while(slow!=fast)
{
if(fast->next==NULL||fast->next->next==NULL)
return false;
fast=fast->next->next;
slow=slow->next;
}
return true;
}
};
作者:huuh
链接:https://leetcode-cn.com/problems/linked-list-cycle/solution/jian-chi-jiu-shi-sheng-li-ao-li-gei-by-huuh/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
刷题总结类 文章被收录于专栏
这里记录一些刷题时候的总结思考