142. 环形链表 II(链表)[通俗易懂]

142. 环形链表 II(链表)[通俗易懂]给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。

说明:不允许修改给定的链表。

进阶:

你是否可以使用 O(1) 空间解决此题?

示例 1:



输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:



输入:head = [1,2], pos = 0
输出:返回索引为 0 的链表节点
解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:



输入:head = [1], pos = -1
输出:返回 null
解释:链表中没有环。
 

提示:

链表中节点的数目范围在范围 [0, 104] 内
-105 <= Node.val <= 105
pos 的值为 -1 或者链表中的一个有效索引
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */
class Solution { 
   
public:
    ListNode *detectCycle(ListNode *head) { 
   
        ListNode *slow = NULL,*fast = NULL,*ptr = head;
        if(head == NULL || head -> next == NULL)return NULL;
        slow = head -> next,fast = head -> next ->next;

        while(fast != NULL){ 
   
            if(slow == fast){ 
   
                while(slow != ptr){ 
   
                    slow = slow -> next;
                    ptr = ptr -> next;
                }
                return ptr;
            }
            slow = slow -> next;
            if(fast -> next == NULL)return NULL;
            fast = fast -> next -> next;
        }
        return NULL;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168553.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 操作系统面试题目(linux系统基础面试题)

    文章目录操作系统简介篇解释一下什么是操作系统操作系统的主要功能软件访问硬件的几种方式解释一下操作系统的主要目的是什么操作系统的种类有哪些为什么Linux系统下的应用程序不能直接在Windows下运行操作系统结构单体系统分层系统微内核客户-服务器模式为什么称为陷入内核什么是用户态和内核态用户态和内核态是如何切换的?什么是内核什么是实时系统Linux操作系统的启动过程进程和线程篇多处理系统的优势什么是进程和进程表什么是线程,线程和进程的区别什么是上下文切换使用多线程的好处是什么进程终止的方式进程的终止

    2022年4月12日
    60
  • 在Windows Server 2012 中安装 .NET 3.5 Framework「建议收藏」

    在Windows Server 2012 中安装 .NET 3.5 Framework「建议收藏」现在仍然有许多程序和应用需要依靠.NET3.5framework来运行。比如sqlserver在WindowsServer2012中,微软提供了.NET3.5和.NET4.5的安装选项以为你的应用程序提供支持。但在安装.NET3.5组件时提示如下信息!当使用服务器管理器来安装.NET3.5时你可能会遇到下面的提示信息,指出源文件无法找到安装其他的功能在添加时并不需要我们提供源…

    2022年6月6日
    33
  • 变量,数据类型以及运算符概述

    变量,数据类型以及运算符概述

    2022年3月6日
    47
  • python ddos攻击_DDoS攻击工具

    python ddos攻击_DDoS攻击工具DDoS攻击工具综合性工具综合性工具除了可以进行DDoS攻击外,还可用于其他的用途,例如:端口扫描、安全审计、防火墙等。实际上,大部分综合性工具开发的原始目的并不是用于DDoS,而是“网络检查或测试工具”Hping?Hping是一个编码和解码TCP/IP协议的命令行开发工具,常用于测试网络及主机的安全,同时也可以做安全审计、防火墙测试等工具的标配工具;Hping的命令行就像常用的ping命令,不…

    2022年7月27日
    15
  • tf卡锁定怎么解锁_tf卡写保护解除办法

    tf卡锁定怎么解锁_tf卡写保护解除办法最近这段时间,开始使用TFS2010进行项目的源码管理,在使用过程中,发现了不些问题,由于开发人员的操作失误,经常导致了源码中的文件被锁定,而在开发人员的PC机上又不能把锁定的文件签入到TFS中,刚开始遇到这个问题时,想通过管理员帐号来“取消锁定”,但在“源代码管理器”中,管理员帐号也没有权限操作“取消锁定”。遇到这种文件被锁定的事,是相当的郁闷。郁闷归郁闷,问题还是得要解决,…

    2022年9月23日
    0
  • 项目中常用的git指令

    项目中常用的git指令

    2021年6月30日
    104

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号