zoukankan      html  css  js  c++  java
  • LeetCode 142 环形链表II

    LeetCode 142 环形链表II

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

    快慢指针

    • 快指针每次走两步、慢指针每次走一步
    • 若链表有环,则两指针必然相遇;否则快指针首先指向null
    • 两指针相遇后,将重新用一指针指向链表头,并与慢指针每次走一步
    • 最终两指针相会于环结构的第一个节点

    执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
    内存消耗:38.9 MB, 在所有 Java 提交中击败了54.95%的用户

    public class Solution {
        public ListNode detectCycle(ListNode head) {
            ListNode fast = head, slow = head;
            while (true) {
                if (fast == null || fast.next == null) return null;
                fast = fast.next.next;
                slow = slow.next;
                if (fast == slow) break;
            }
            fast = head;
            while (slow != fast) {
                slow = slow.next;
                fast = fast.next;
            }
            return fast;
        }
    }
    
  • 相关阅读:
    robot 如何定义用户关键字、变量
    appium 启动参数配置
    mock模拟接口返回数据
    jenkins 中邮件发送
    python中正则表达式
    python中操作数据库
    pytest和unittest中参数化如何做
    learnku社区分享
    FOR ALL ENTRIES IN的使用
    BAPI_DELIVERYPROCESSING_EXEC
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13790124.html
Copyright © 2011-2022 走看看