题解 | #判断链表中是否有环#

判断链表中是否有环

https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9

import java.util.*;
/**
 * 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) {
        boolean flag = false;
//慢指针
        ListNode slow = head;
//        快指针
        ListNode fast = head;

        if (head == null) {
            return false;
        }


        while (true) {
            if (slow.next == null || fast.next == null || fast.next.next == null) {
                break;
            }
            slow = slow.next;
            fast = fast.next.next;

            if (slow == fast) {
                flag = true;
                break;
            }

        }


        return flag;
    }

}
  1. 快慢指针解决链表出现的回环的问题。
  2. 如果有环两个指针一定会相遇。
  3. 如果没有环就一定回到终点,也就是会指向null。 如果链表没有环,快指针会先到达链表的末尾 (null),退出循环。

判断能否到达尾部,fast.next==null 预判下一个或者后两个是否为空。

全部评论

相关推荐

点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
小叮当411:应该是1-3个月吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务