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

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

作者: 光影墨辰 | 来源:发表于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