美文网首页数据结构与算法
链表--链表中环的检测

链表--链表中环的检测

作者: 暮想sun | 来源:发表于2019-12-18 11:26 被阅读0次

    给定一个链表,判断链表中是否有环。
    为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

    输入:head = [3,2,0,-4]
    输出:true
    解释:链表中有一个环,其尾部连接到第二个节点。


    public static void main(String[] args) {
    
            ListNode node3 = new ListNode(3);
    
    
            ListNode node1 = new ListNode(1);
            ListNode node2 = new ListNode(2,node1);
            node3.next = node2;
            node1.next = node3;
            ListNode node4 = new ListNode(4,node3);
    
            System.out.println(listHasCycle(node4));
    
    
        }
    
    
        public static Boolean listHasCycle(ListNode head) {
    
    
            ListNode fast = head;
            ListNode slow = head;
    
    //fast走两步,slow走一步,若相遇,则必存在环
            while (fast != null && fast.next !=null){
                fast = fast.next.next;
                slow = slow.next;
                if(fast == slow){
                    return  true;
                }
            }
    
            return false;
        }
    
        private static class ListNode {
    
            private int val;
    
            private ListNode next;
    
            public ListNode(int val) {
                this.val = val;
            }
    
            public ListNode(int val, ListNode next) {
                this.val = val;
                this.next = next;
            }
        }
    

    相关文章

      网友评论

        本文标题:链表--链表中环的检测

        本文链接:https://www.haomeiwen.com/subject/tzwenctx.html