力扣141-环形链表

文章目录

  • 力扣141-环形链表
  • 示例
  • 代码实现
  • 要点剖析

力扣141-环形链表

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

示例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码实现

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public boolean hasCycle(ListNode head) {if(head==null||head.next==null){return false;}ListNode slow=head;ListNode fast=head.next;while(slow!=fast&&fast!=null&&fast.next!=null){slow = slow.next;fast=fast.next.next;}if(slow==fast){return true;}else{return false;}}
}

要点剖析

1、链表中找的思想:快慢指针,创建两个指针,一个快指针:一次走两步一个慢指针:一次走一步,若相遇则有环,若指向null则无环。

2、为什么我们要规定初始时慢指针在位置 head,快指针在位置 head.next,而不是两个指针都在位置 head(即与「乌龟」和「兔子」中的叙述相同)?

观察上面面的代码,我们使用的是 while 循环,循环条件先于循环体。由于循环条件一定是判断快慢指针是否重合,如果我们将两个指针初始都置于 head,那么 while 循环就不会执行。因此,我们可以假想一个在 head 之前的虚拟节点,慢指针从虚拟节点移动一步到达 head,快指针从虚拟节点移动两步到达 head.next,这样我们就可以使用 while 循环了。

当然,我们也可以使用 do-while 循环。此时,我们就可以把快慢指针的初始值都置为 head。

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

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

相关文章

重新认识电声器件!

电声器件:实现电声转换的重要工具 在科技快速发展的今天,电声器件已经深入到我们生活的方方面面。无论是音乐、语音通信、电影等娱乐领域,还是雷达、电子侦察等军事领域,甚至在生物医学工程中,如助听器和人工耳蜗等设备…

计算机基础知识60

MySQL分组 # 概念:分组是按照某个指定的条件将单个单个的个体分成一个个整体 # MySQL分组的关键字:group by # 分组一般配合聚合函数使用: sum max min avg count 基本的语法格式: group by 字段名 [having 条件表达式] # 单独使用 group by关…

再探Java集合系列—ArrayList

适用于什么场景? 检索比较多的场景,例如学生成绩管理系统,老师对学生的成绩进行排名或查询操作 ArrayList有哪些特点? 1、ArrayList集合底层采用了数组数据结构,是Object类型 2、动态数组。ArrayList的默认初始容量…

Makefile之 CFLAGS CXXFLAGS CC LDFLAGS LD

Makefile之 CFLAGS CXXFLAGS CC LDFLAGS LD 1)CFLAGS:该环境变量用于指定C语言的编译器选项。它包含了编译C源代码时所需的选项,例如优化级别、警告级别、编译器标志等。在Makefile中,可以将CFLAGS设置为任何所需的编译器选项。例…

BSD socket API

API函数 以下函数是最基本的 socket API socket() 创造某种类型的套接字,分配一些系统资源,用返回的整数识别。 bind() 一般是用在服务器这边,和一个套接字地址结构相连,比如说是一个特定的本地端口号和一个IP地址。 listen()用在…

第1章 理解知识图谱(一)

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

SpringBoot : ch11 整合RabbitMQ

前言 在当今的互联网时代,消息队列成为了构建高可靠、高性能系统的重要组件之一。RabbitMQ作为一个可靠、灵活的消息中间件,被广泛应用于各种分布式系统中。 本篇博客将介绍如何使用Spring Boot整合RabbitMQ,实现消息的发送和接收。通过这种…

基于SpringBoot的教师工作量管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的教师工作量管理系统,ja…

硬件工程师助理怎么买器件

1. 买器件的要求。 1. 保证器件的质量。 2. 货期近可能的合适。 3.稳定渠道。 2. 器件到哪里买 1. 首先到立创商城去买,因为方便,价格明显,质量有保证。 立创商城链接:新人注册享元器件优惠券_新人特价商品_立创商城 (szlcsc.com…

视频集中存储/磁盘阵列EasyCVR平台黑名单异常解决步骤是什么?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

华为云(HECS)docker环境下安装jenkins

Jenkins是一个开源的自动化工具,可以自动化地完成构建、测试、交付或部署等任务。总之重点就是三个字:自动化,至于如何实现这些功能,Jenkins基于插件化的机制,提供了众多的插件来完成持续集成CI与持续部署CD。 【持续…

【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】

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

每日随想:在Python中字符串如何转列表

要将一个字符串转换为列表,可以使用字符串的 split() 方法。split() 方法根据指定的分隔符将字符串分割成子串,并将这些子串组成列表。 假设有一个用空格分隔的字符串,我们想要将其转换为一个单词列表: my_string "Hello w…

Ajax 是什么? 如何创建一个 Ajax?

Ajax(Asynchronous JavaScript and XML)是一种使用客户端JavaScript发送异步HTTP请求到服务器的技术,以便在不重新加载整个页面的情况下更新部分网页内容。 使用Ajax的原因有很多,以下是其中一些: 改善用户体验&…

pdf文件能扫码查看吗?一键做文本二维码

pdf格式是常用的一种文件格式,很多资料、展示性的内容都会选择这种格式,现在很多人都需要将文件生成二维码图片后分享给他人,那么文件存入二维码展示的方法有哪些呢?下面给大家分享一招使用二维码生成器来生成二维码图片的操作方法…

[英语学习][3][Word Power Made Easy]的精读与翻译优化

[序言] 这次翻译校验, 难度有点大, 原版中英翻译已出现了严重地偏差. 昨晚11点开始阅读如下段落, 花费了1个小时也没有理解原作者的核心表达, 索性睡觉了. 今早学习完朗文单词之后, 9点半开始继续揣摩. 竟然弄到了中午11点30, 终于明白原作者要表达的意思了. 废话不多说&#x…

插入排序:理解经典的排序技术

什么是插入排序? 插入排序是一种简单而直观的排序算法,它的工作方式类似于我们手动排序卡片或整理文件: 工作原理: 初始状态:将数组分为两部分:一部分是已排序的(最开始时这部分只包含第一个元…

SVD recommendation systems

SVD recommendation systems 为什么在推荐系统中使用SVD 一个好的推荐系统一定有小的RMSE R M S E 1 m ∑ i 1 m ( Y i − f ( x i ) 2 RMSE \sqrt{\frac{1}{m} \sum_{i1}^m(Y_i-f(x_i)^2} RMSEm1​i1∑m​(Yi​−f(xi​)2 ​ 希望模型能够在已知的ratings上有好的结果的…

[学习笔记]IK分词器的学习

IK分词器有几种模式 # 测试分词器 POST /_analyze {"text":"黑马程序员学习java太棒了","analyzer": "standard" }# 测试分词器 POST /_analyze {"text":"黑马程序员学习java太棒了","analyzer": &quo…

电脑风扇转一下停一下,无法正常开机问题解决

今天同事电话说电脑开不了机了,只听见风扇不停地呜呜地作响。笔者第一反应是不是硬件哪里出问题了,于是二话没说拿起心爱的螺丝刀就闪了过去。 按下电源,确实如电话所述。但感觉风扇并非一直在转,而是时断时续。由于听不大真切&a…