【LeetCode】141. 环形链表 进阶题142. 环形链表 II

news2024/11/24 6:24:33

 141. 环形链表

这道题还是用经典的快慢指针法来做。每次让快的指针走两步,慢的走一步。如果有环,则绝对会在环内的某一节点相遇。思想跟物理知识有点关系,如果有环,则在相对运动过程中,可以相当于慢指针静止,快指针每次走一步,那么最终肯定会相遇。这也是判断有环的条件。

若无环,则快指针在走的过程中,最后肯定会为null。这是判断无环的条件。

 算法代码

public class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;
        while(fast!=null&&fast.next!=null) {

            fast = fast.next.next;
            slow = slow.next;

            if(fast == slow) {
                return true;
            }

        }

        return false;
        
    }
}

运行结果

 

142. 环形链表 II

相比上一题,上个题只需要判断有环无环,此题在上个题的基础上还要返回链表开始入环的第一个节点。如果链表无环,则返回null。

思路就是当确定是有环的时候,再加入一个指向头结点的指针,此时让指向相遇点的指针和新加入的(指向头结点)的这两个指针,继续往后以相同“速度”往后走,直到“相遇”(指向同一个节点),此时所指的这个节点就是链表开始入环的第一个节点。

 算法代码

public class Solution {
    public ListNode detectCycle(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;

        while(fast!=null && fast.next!=null){
            fast = fast.next.next;
            slow = slow.next;

            if(fast == slow) {
                ListNode node = head;  //新加入一个指向头结点的指针
                while(node != slow) {
                    node = node.next;
                    slow = slow.next;
                }
                return node; //返回slow也行
            }
        }

        return null;
        
    }
}

运行结果

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32入门——外部中断

中断系统概述 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行中断优先级&#xff…

Java集合数组相互转换

1.集合转换成数组 (1)集合a通过toArray()方法进行转换为数组,可以转换成为指定类型的数组,但是这些类型都必须是object类型的子类,基本类型不可以。 必要时我们使用强制类型转换,转成我们需要的类型。 Li…

【网络编程】poll

主旨思想 用一个结构体记录文件描述符集合&#xff0c;并记录用户态状态和内核态状态 函数说明 概览 #include <poll.h> struct pollfd { int fd; /* 委托内核检测的文件描述符 */ short events; /* 委托内核检测文件描述符的什么事件 */ short revents; /* 文件描述…

MySQL 远程操作mysql

可以让别人在他们的电脑上操作我电脑上的数据库 create user admin identified with mysql_native_password by admin; //设置账号密码都为admingrant all on *.* to admin; //给admin账号授权 授权完成

​五、驱动 - ​音频系统硬件电路

文章目录 1. 音频系统硬件电路结构2. 蓝牙音频2.1 音乐播放2.2 VoIP通话2.3 4G通话3. 其他3.1 什么是S/PDIF1. 音频系统硬件电路结构 录音放音设备:mic、speaker、耳机、听筒这些带有录音放音功能的设备(因为录放设备可能是模拟设备也可能是数字设备,所以接口可能是模拟接口…

IDEA中怎么使用git下载项目到本地,通过URL克隆项目(gitee\github)

点击 新建>来自版本控制的项目 点击后会弹出这样一个窗口 通过URL拉取项目代码 打开你要下载的项目仓库 克隆>复制 gitee github也是一样的 返回IDEA 将刚刚复制的URL粘贴进去选择合适的位置点击克隆 下载完成

JavaEE初阶之网络初识

一、网络发展史 1.1独立模式 独立模式:计算机之间相互独立; 1.2网络互连 随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。网络互连:将多台计算机连接在一起,完成数据共享。 数据共享本质是网络数据…

【Python】5分钟了解11个最佳的Python编译器和解释器

11个最佳Python编译器和解释器 1. Brython2. Pyjs3. WinPython4. Skulpt5. Shed Skin6. Active Python7. Transcrypt8. Nutika9. Jython10. CPython11. IronPython结论原文链接 Python是一门初学者的编程语言。它是一种高级语言&#xff0c;非常灵活、解释性和面向对象的语言。…

安防监控进入全景时代,萤石全景摄像机E4p体验评测

随着智能家居的普及&#xff0c;智能家居摄像机已经成为我们必备的智能家居设备之一。传统摄像机在捕捉画面时只能获得单一角度的画面&#xff0c;可能会错过关键信息。 针对这个问题&#xff0c;萤石最近推出的E4p全景摄像机&#xff0c;解决了用户在特定场景下需要更全面画面…

笔试数据结构选填题

目录 卡特兰数Catalan&#xff1a;出栈序列/二叉树数 树 二叉树 N01N2 哈夫曼树&#xff08;最优二叉树&#xff09;Huffman 度m的哈夫曼树只有度为0和m的结点&#xff1a;Nm(n-1)/(m-1) 平衡二叉树AVL Nh表示深度为h最少结点数&#xff0c;则N00&#xff0c;N11&#…

Linux下TCP网络服务器与客户端通信程序入门

文章目录 目标服务器与客户端通信流程TCP服务器代码TCP客户端代码 目标 实现客户端连接服务器&#xff0c;通过终端窗口发送信息给服务器端&#xff0c;服务器接收到信息后对信息数据进行回传&#xff0c;客户端读取回传信息并返回。 服务器与客户端通信流程 TCP服务器代码 …

AI 绘画Stable Diffusion 研究(五)sd文生图功能详解(下)

大家好&#xff0c;我是风雨无阻。 上一篇文章详细介绍了sd文生图的功能及使用注意事项&#xff0c;感兴趣的朋友可以前往查看&#xff1a;AI 绘画Stable Diffusion 研究&#xff08;四&#xff09;sd文生图功能详解&#xff08;上&#xff09; 。 那今天这篇文章&#xff0c;我…

【牛客网】二叉搜索树与双向链表

二叉搜索树与双向链表 题目描述算法分析编程代码 链接: 二叉搜索树与双向链表 题目描述 算法分析 编程代码 /* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution { public:…

解决Hadoop审计日志hdfs-audit.log过大的问题

【背景】 新搭建的Hadoop环境没怎么用&#xff0c;就一个环境天天空跑&#xff0c;结果今天运维告诉我说有一台服务器磁盘超过80%了&#xff0c;真是太奇怪了&#xff0c;平台上就跑了几个spark测试程序&#xff0c;哪来的数据呢&#xff1f; 【问题调查】 既然是磁盘写满了&…

第七章 图论

第七章 图论 一、数据结构定义 图的邻接矩阵存储法#define MaxVertexNum 100 // 节点数目的最大值// 无边权&#xff0c;只用0或1表示边是否存在 bool graph[MaxVertexNum][MaxVertexNum];// 有边权 int graph[MaxVertexNum][MaxVertexNum];图的邻接表存储法 把所有节点存储为…

python手机编程软件app下载,用手机编程python的软件

本篇文章给大家谈谈python手机编程软件app下载&#xff0c;以及python编程手机软件哪个好&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 前言 相信多数安卓用户都使用过Qpython这款移动端的Python编辑器吧&#xff1f;之前我也研究过一阵子这个工具&#xf…

轮足机器人硬件总结

简介 本文主要根据“轮腿机器人Hyun”总结的硬件部分。 轮腿机器人Hyun开源地址&#xff1a;https://github.com/HuGuoXuang/Hyun 1 电源部分 1.1 78M05 78M05是一款三端稳压器芯片&#xff0c;它可以将输入电压稳定输出为5V直流电压. 1.2 AMS1117-3.3 AMS1117-3.3是一种输…

钉钉群消息推送

1. 添加钉钉群机器人 PC端登录&#xff08;当前版本手机端无法进行推送关键词设置&#xff09;&#xff0c;群设置--> 机器人 --> webhook进行安全设置复制webhook对应的url 2. 群消息推送 钉钉群消息支持纯文本和markdown类型 2.1 调用示例源码 import com.alibaba.…

【Python】导函数 及 求解微分方程

如何用Python求解微分方程&#xff0c;主要是基于Python的 sympy 库来进行微分运算&#xff0c;sympy库的 diff函数主要用于导函数&#xff0c;dsolve函数用于解微分方程。 导函数 import sympy as sp# 定义符号变量 x sp.symbols(x)# 定义函数 f sp.sin(x) * sp.exp(x)# 求…

SpringBoot整合Elasticsearch(最新最全,高效安装到使用)

文章目录 一、安装Elasticsearch相关插件1.选择版本2.安装Elasticsearch3.安装node4.安装grunt5.安装es-head插件6.安装kibana7.安装ik分词器 二、整合SpringBoot和Elasticearch1.pom.xml2.application.yml3.ElasticSearch&#xff08;实体类&#xff09;4.ElasticSearchReposi…