Skip to content

Latest commit

 

History

History
46 lines (36 loc) · 893 Bytes

README.md

File metadata and controls

46 lines (36 loc) · 893 Bytes

Description

Given a linked list, determine if it has a cycle in it.

Follow up:
Can you solve it without using extra space?

思路

使用快慢两个指针,慢指针每次前进一步,快指针每次前进两步,如果慢指针和快指针相等,说明有环。

实现代码

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
  public boolean hasCycle(ListNode head) {
    ListNode slow = head;
    ListNode fast = head;
    while (fast != null && fast.next != null) {
      slow = slow.next;
      fast = fast.next.next;
      if (slow == fast) {
        return true;
      }
    }
    return false;
  }
}