美文网首页
判断一个链表中是否存在环

判断一个链表中是否存在环

作者: 光影墨辰 | 来源:发表于2017-09-19 14:21 被阅读0次

    链表节点:

    class ListNode {
        int val;
        ListNode next = null;
        public ListNode(int a){
            this.val = a;
        }
    }
    

    判断由上诉节点组成的链表中是否存在环

    思路:

    用两个指针(cur1和cur2)指向链表的头部,一个指针每次向后走一个节点,另一个指针每次向后走两个节点,如果有环,则cur1和cur2必然在某个时候相等。
    代码实现:

    public static boolean isCycle(ListNode head){
            if(head == null || head.next == null){
                return false;
            }
            ListNode cur1 = head;
            ListNode cur2 = head;
            while(cur1.next != null && cur2.next != null){
                cur1 = cur1.next;
                cur2 = cur2.next;
                if(cur2.next == null){
                    break;
                }
                cur2 = cur2.next;
                if(cur1 == cur2){
                    return true;
                }
            }
            return false;
        }
    

    相关文章

      网友评论

          本文标题:判断一个链表中是否存在环

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