LeetCode - 142. Linked List Cycle II

栏目: 编程工具 · 发布时间: 6年前

内容简介:Given a linked list, return the node where the cycle begins. If there is no cycle, returnNote: Do not modify the linked list.Follow up:

Given a linked list, return the node where the cycle begins. If there is no cycle, return null .

Note: Do not modify the linked list.

Follow up:

Can you solve it without using extra space?

快慢指针,参考 LeetCode - 141. Linked List Cycle

先判断是否有环,记录第一次相遇位置,然后快指针指向head指针,同步走,再次相遇时的节点即为环的入口。

证明:TODO

/**
 * 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) {
        if (head == null)
            return null;
        ListNode fast = head, slow = head;
        int cnt = 0;
        while (true) {
            if (fast == null)
                return null;
            if (cnt > 0 && fast == slow)
                break;
            slow = slow.next;
            fast = fast.next;
            if (slow == null || fast == null)
                return null;
            fast = fast.next;
            cnt ++;
        }
        fast = head;
        while (fast != slow) {
            fast = fast.next;
            slow = slow.next;
        }
        return fast;
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python高级编程(第二版)

Python高级编程(第二版)

[波兰] Michał Jaworski、[法] Tarek Ziadé / 张亮、阿信 / 人民邮电出版社 / 2017-9-19 / 89.00元

Python作为一种高级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言之一。 本书基于Python 3.5版本进行讲解,通过13章的内容,深度揭示了Python编程的高级技巧。本书从Python语言及其社区的现状开始介绍,对Python语法、命名规则、Python包的编写、部署代码、扩展程序开发、管理代码、文档编写、测试开发、代码优化、并发编程、设计模式等重要话题......一起来看看 《Python高级编程(第二版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具