算法

链表是否存在环的判断

2019-08-08  本文已影响0人  _NewMoon

如何判断一个单链表是否存在环

  1. 快慢指针: 创建两个指针first,second指向头节点,first每次走一个结点,second每次走两个结点,
    如果该链表中存在环,那么这两个指针一定能相遇(快慢指针的思路在链表题目中非常常见,需要掌握)
    2.一般方法: 创建两个指针p,q指向头节点,p总是向前走,q每次走从头开始走,每次相遇,比较两个指针

例题: 141. 环形链表

141.环形链表
class Solution {
public:
    bool hasCycle(ListNode *head) {
        if(!head||head->next==NULL) return false;
        ListNode *first,*second;
        first = head;
        second = head->next;
        while(first!=second && second->next!=NULL && second->next->next != NULL)
        {
            first = first->next;
            second = second->next->next;
        }
        return first == second? true:false;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读