牛客热题:链表中环的入口结点

📟作者主页:慢热的陕西人

🌴专栏链接:力扣刷题日记

📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言

在这里插入图片描述

文章目录

  • 牛客热题:**链表中环的入口结点**
    • 题目链接
    • 方法一:哈希表
      • 思路
      • 代码
      • 复杂度
    • 方法二:快慢指针
      • 思路
      • 代码
      • 复杂度

牛客热题:链表中环的入口结点

题目链接

链表中环的入口结点_牛客题霸_牛客网 (nowcoder.com)

方法一:哈希表

思路

  • 遍历链表,然后将每一个节点的地址存储在哈希表
  • 当我们遇到已经被遍历过的节点,那么我们认为这个节点就是对应的环的入口

代码

class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) 
    {
        unordered_set<ListNode*> hash;

        while(pHead != nullptr)
        {
            if(hash.count(pHead)) return pHead;
            else hash.insert(pHead);
            pHead = pHead->next;
        }

        return nullptr;
    }
};

复杂度

  • **时间复杂度:**O(N), 遍历了一次链表
  • **空间复杂度:**O(N), 创建了一个哈希表,这个哈希表的最大大小也就是链表的长度

方法二:快慢指针

思路

通过定义slow和fast指针,slow每走一步,fast走两步,若是有环,则一定会在环的某个结点处相遇(slow == fast),根据下图分析计算,可知从相遇处到入口结点的距离头结点与入口结点的距离相同

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码

class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) 
    {
        if(pHead == nullptr) return pHead;
        ListNode* l = pHead;
        ListNode* r = pHead;

        while(r != nullptr && r->next != nullptr)
        {
            //快指针走两步,慢指针走一步
            r = r->next->next;
            l = l->next;
            if(l == r) break;
        }
        //不存在环的情况
        if(r == nullptr || r->next == nullptr) return nullptr;
        
        //重新指向链表头部
        r = pHead;
        //与第一次相遇的节点相同的速度出发,相遇的节点为入口节点
        while(l != r)
        {
            l = l->next;
            r = r->next;
        }
        return r;
    }
};

复杂度

  • **时间复杂度:**O(N), 遍历了一次链表
  • **空间复杂度:**O(1), 创建了两个指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/590487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

搭建并配置HTTPD文件服务及访问权限控制

一、安装HTTPD服务 yum -y install httpd 查看安装版本 httpd -v 二、HTTPD服务目录结构 conf: 存放主要的配置文件&#xff0c;如httpd.conf。 conf.d: 包含额外的配置文件&#xff0c;可以通过主配置文件包含进来。 conf.modules.d: 包含Apache模块的配置文件。 logs: 存放…

【python】python新闻数据抓取情感分析可视化(源码+数据)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

ArmSoM-Sige5 RK3576开发板 正式发布!

简介​ ArmSoM-Sige5 采用Rockchip RK3576第二代8nm高性能AIOT平台&#xff0c;6 TOPS算力NPU&#xff0c;最大可配16GB大内存。支持8K视频编解码&#xff0c;拥有丰富的接口&#xff0c;支持双千兆网口&#xff0c;WiFi6 & BT5和多种视频输出。支持多种操作系统&#xff…

如何基于nginx搭建https网站

华子目录 使用nginx的http_ssl模块建立加密传输的网站查看配置文件ssl配置文件的主要参数实验&#xff1a;搭建nginxssl加密认证的web服务器 使用nginx的http_ssl模块建立加密传输的网站 查看 [rootserver ~]# nginx -V #查看是否有--with-http_ssl_module模块&#xff0c;如…

MIPS32 指令架构

指令格式 R 类型 说明&#xff1a; 用于寄存器和寄存器操作 参数说明: Op: 指令操作码Rs: 第一个源操作数寄存器号&#xff0c;参与运算使用Rd: 目的操作数寄存器号&#xff0c;保存结果使用Shamt: 位偏移量&#xff0c;仅在位移指令使用&#xff0c;在此直接置0Func: 指令函…

uni-app scroll-view隐藏滚动条的小细节 兼容主流浏览器

开端 想写个横向滚动的列表适配浏览器&#xff0c;主要就是隐藏一下滚动条在手机上美观一点。 但是使用uni-app官方文档建议的::-webkit-scrollbar在目标标签时发现没生效。 .scroll-view_H::-webkit-scrollbar{display: none; }解决 F12看了一下&#xff0c;原来编译到浏览…

postman一直转圈圈,无法启动

解决 地址栏输入%appdata%进入此目录&#xff0c;删除%appdata%目录下的postman文件可以解决问题。

北京金融大数据有限公司X百望云签署战略合作协议 共同发布“金数数据要素流通云平台”

随着数据资产与数据要素相关政策密集出台&#xff0c;资本与实业企业均跃跃欲试。但因为没有龙头企业的方案引领和成熟的落地实践&#xff0c;市场呈谨慎观望态势&#xff0c;热度无处安放。 北京金融大数据有限公司&#xff08;以下简称“金融大数据公司”&#xff09;作为市…

基于ssm+jsp+mysql+java的人事管理系统

&#x1f49e;文末获取源码联系&#x1f649; &#x1f447;&#x1f3fb; 精选专栏推荐收藏订阅&#x1f447;&#x1f3fb; &#x1f380;《Java精选实战项目-计算机毕业设计题目推荐-期末大作业》&#x1f618;更多实战项目~ https://www.yuque.com/liuyixin-rotwn/ei3euo/d…

顺序栈--c语言实现

#include <stdio.h> #include <stdlib.h> #include <stdbool.h>#define MAXSIZE 100 // 定义栈的最大容量// 顺序栈的结构体定义 typedef struct {int data[MAXSIZE]; // 存储元素的数组int top; // 栈顶指针&#xff0c;初始化为-1表示空栈 } SqStack;// 初…

Python 操作 json 数据

在Python中&#xff0c;操作JSON数据主要包括序列化&#xff08;将Python对象转换为JSON格式&#xff09;和反序列化&#xff08;将JSON字符串转换回Python对象&#xff09;。 以下是使用Python内置的json模块进行这些操作的基本示例&#xff1a; JSON 序列化 (Serialization…

MFC 列表控件删除实例(源码下载)

1、本程序基于前期我的博客文章《MFC下拉菜单打钩图标存取实例&#xff08;源码下载) 》 2、程序功能选中列表控件某一项&#xff0c;删除按钮由禁止变为可用&#xff0c;点击删除按钮&#xff0c;选中的项将删除。 3、首先在主界面添加一个删除参数按钮。 4、在myDlg.cpp 文件…

DS:链表的分类

欢迎来到Harper.Lee的学习世界&#xff01; 博主主页传送门&#xff1a;Harper.Lee的博客主页 想要一起进步的uu欢迎来后台找我哦&#xff01; 链表的结构⾮常多样&#xff0c;以下情况组合起来就有8种&#xff08;2 * 2 * 2&#xff09;链表结构。下面我们依次来认识它们吧&am…

等级保护测评一般多长时间能做完?

一个二级或三级的系统&#xff0c;整体持续周期一到两个月 具体时间还要根据信息系统数量&#xff0c;及信息系统的规模&#xff0c;以及测评方与被测方的配合情况等&#xff0c;有所增减。 现场测评周期一般一周左右 小规模安全整改&#xff0c;包括管理制度策略配置技术&a…

ASP.NET图书馆管理信息系统

摘  要 本文首先阐述了基于.NET Framework平台的图书馆管理信息系统的开发背景以及其实践意义&#xff0c;其次说明了图书馆管理信息系统的功能以及相比同类软件的创新之处。然后就图书馆管理系统开发中所使用的一些的技术进行研究探讨。主要针对数据库的设计技术、存储过程…

Qt模型视图代理之MVD(模型-视图-代理)概念的简单介绍

往期回顾 Qt绘图与图形视图之Graphics View坐标系的简单介绍-CSDN博客 Qt绘图与图形视图之基本图元绘制的简单介绍-CSDN博客 Qt绘图与图形视图之自定义图元实现拖拽、拉伸、旋转功能-CSDN博客 Qt模型视图代理之MVD(模型-视图-代理)概念的简单介绍 一、基本概念 Qt模型视图代理…

浅谈MOS管的发热原因和解决办法

大家好&#xff0c;我是砖一。 今天给大家分享一下MOS管基础知识&#xff0c;为什么内阻那么小的MOS管&#xff0c;也会发热&#xff1f;有做功率元器件&开关电源和IC的朋友可以了解一下&#xff0c;希望对你有用~ 一&#xff0c;MOS管发热影响因素 经常查阅MOS管的数据手…

xftp破解版?No!xftp平替开源工具✔

文章目录 一、背景说明二、WindTerm介绍三、简单使用说明3.1 新建一个ssh连接窗口![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/bfbe5114916e4a7e94ca0f9ceb05ca37.png)3.2 输入主机ip和端口号3.3 点击Continue3.4 输入密码3.5 登入成功3.6 下载文件到本地3.7 上…

vue+element-ui实现横向长箭头,横向线上下可自定义文字(使用after伪元素实现箭头)

项目场景&#xff1a; 需要实现一个长箭头&#xff0c;横向线上下可自定义文字 代码描述 <div><span class"data-model">{{ //上方文字}}</span><el-divider class"q"> </el-divider>//分隔线<span class"data-mod…

C语言/数据结构——每日一题(环形链表的约瑟夫问题)

一.前言 今天在牛客网上面看到了一道环形链表题&#xff0c;想着和大家们分享一下。可能我有点笨&#xff0c;那道题的链接我没搞好&#xff0c;所以很抱歉&#xff0c;只能麻烦大家们看一下截屏的题目信息了。废话不多数&#xff0c;让我们开始今天的题目分享吧。 二.正文 …