刷题No26. linked-list-cycle(环形链表)(java)【链表】

题目:判断给定的链表中是否有环

思路:设置快慢指针,刚开始快慢指针同时指向某一个节点,然后进行next,当快慢指针再次相遇的时候,说明该链表有环。

代码:

package com.company;

public class TestNo26 {
    static class ListNode{
        int val;
        ListNode next;
        ListNode(int x){
            val = x;
            next = null;
        }
    }
    public static void main(String[] args) {
        ListNode head = new ListNode(3);
        head.next = new ListNode(4);
        head.next.next = new ListNode(7);
        head.next.next.next = new ListNode(6);
        head.next.next.next.next = head;
        TestNo26 t = new TestNo26();
        System.out.println(t.hasCycle(head));

    }
    public boolean hasCycle(ListNode head) {
        //快指针
        ListNode fast = head;
        //慢指针
        ListNode slow = head;
        while (fast != null && slow != null){
            fast = fast.next.next;
            slow = slow.next;
            //当快指针与慢指针相遇的时候,则有环。
            if(fast == slow){
                return true;
            }
        }
        return false;
    }
}
发布了46 篇原创文章 · 获赞 11 · 访问量 3578

猜你喜欢

转载自blog.csdn.net/qq_40664693/article/details/104277356