Linked List Cycle

来源:互联网 发布:vmware virtualbox知乎 编辑:程序博客网 时间:2024/06/05 01:10

1.题目

给定一个链表,判断它是否有环。

给出 -21->10->4->5, tail connects to node index 1,返回 true

2.算法

假设有两个指针walker和runner,walker用一倍速度向前走,runner用2倍速度向前走,当两指针相遇时,返回true

    public boolean hasCycle(ListNode head) {          // write your code here        if (head == null)        {            return false;        }        ListNode walker = head;        ListNode runner = head;        while (runner != null && runner.next != null)        {            walker = walker.next;            runner = runner.next.next;            if (walker == runner)            {                return true;            }        }        return false;    }




0 0
原创粉丝点击