141. Linked List Cycle

Posted mrjoker-lzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了141. Linked List Cycle相关的知识,希望对你有一定的参考价值。

141. Linked List Cycle (环形链表)

题目概述:判断一个链表中是否有环

思路

  创建两个指针(快指针和慢指针),慢指针的移动方式为:单次移动一个结点;快指针的移动方式为:单次移动两个结点。如果快指针指向的结点和慢指针指向的结点相同(注:这里的结点指向了对象,所以直接通过==判断是否为同一结点),则该链表有环。

代码实现

/**
 * 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 slowPointer = head;
        ListNode fastPointer = head;
        while (slowPointer != null && fastPointer != null && fastPointer.next != null) {
            slowPointer = slowPointer.next;
            fastPointer = fastPointer.next.next;
            if (slowPointer == fastPointer) {return true;}
        }
        return false;
    }
}

 

以上是关于141. Linked List Cycle的主要内容,如果未能解决你的问题,请参考以下文章

141. Linked List Cycle

141. Linked List Cycle

141. Linked List Cycle

141. Linked List Cycle

算法分析如何理解快慢指针?判断linked list中是否有环找到环的起始节点位置。以Leetcode 141. Linked List Cycle, 142. Linked List Cycl(代码

141. Linked List Cycle