LeetCode基础-链表-判断链表是否有环

来源:互联网 发布:qq微信哪个有价值知乎 编辑:程序博客网 时间:2024/06/06 14:25

单链表数据结构:

 //Definition for singly-linked list. public class ListNode  {     public int val;     public ListNode next;     public ListNode(int x) { val = x; } }

思路:
有两个指针快慢套跑遍历,快指针每次走两格,慢指针每次走一格,当快慢指针相遇时,即有环。如果快指针走到末尾(循环结束)都没有相遇,则无环。

    public bool HasCycle(ListNode head) {        if(head == null)        {            return false;        }        ListNode slow = head;        ListNode fast = head;        while(fast.next != null && fast.next.next != null)        {            slow = slow.next;            fast = fast.next.next;            if(slow == fast)            {                return true;            }        }        return false;    }