美文网首页
142.环形链表II

142.环形链表II

作者: 皮蛋豆腐酱油 | 来源:发表于2019-05-22 16:38 被阅读0次

    给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
    为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
    说明:不允许修改给定的链表。

    /**
     * Definition for singly-linked list.
     * class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
        public ListNode detectCycle(ListNode head) {
            ListNode fast = head;
            ListNode slow = head;
            ListNode tmp = null;
            while(fast != null) {
                if(fast.next != null) {
                    fast = fast.next.next;
                } else {
                    break;
                }
                    
                slow = slow.next;
                if(fast == slow) {
                    tmp = head;
                    //从head到入口距离设为a,入口到快慢重合点距离设为b,slow走了a+b,fast走了(a+b)*2,从head处设一节点tmp往后走a,slow也继续走a,tmp和slow相遇处即为入口
                    while(tmp != slow) {
                        slow = slow.next;
                        tmp = tmp.next;
                    }
                    break;
                }
            }
            return tmp;
        }
    }
    

    相关文章

      网友评论

          本文标题:142.环形链表II

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