当前位置: 首页 > news >正文

leetcode刷题日记:141. Linked List Cycle(环形链表)

这一题是给我们一个链表让我们判断这是否是一个环形链表,我们知道如果一个链表中有环的话这一个链表是没有办法访问到尾的,
假若有如图所示的带环链表:
在这里插入图片描述
我们从图示中很容易看出来这一个链表在访问的时候会在里面转圈,我们再来看看无环链表的访问是什么样的,
在这里插入图片描述
我们可以清楚的看到,这一个无环链表在访问的时候会访问到尾,最后指针为NULL,此时说明链表无环。但是还是无法区别这两种链表啊,因为假如链表够长,我怎么知道它是因为链表有环导致没有访问完,还是因为链表太长没有访问完,所以根据链表经过的节点数目是无法判断这是一个有环链表还是无环链表。
但是我们一想有环链表啥特性,是不是访问结点时会重复,既然一个指针访问链表时无法判断是不是重复访问了,那么我们用两个指针去看会不会重复访问结点不就行了,就像我们跑步一样,在环形跑道上只要两个人的速度不一样这两个人就会相遇,这两个指针也是这样只要两个指针的速度不一样,在环上就会相遇。如果链表无环,跑的快的指针会先一步到达链表的尾端,这样就可以判断这是一个无环链,综上,使用两个遍历速度不一样的指针可以判断出一个链表是否为有环链表。
就像钟表上的时针与分针会相遇一样,这两个速度不一样的指针也会相遇。
根据上面的思路我们可以写出如下代码:

bool hasCycle(struct ListNode *head) {struct ListNode *p=head, *q = head;if(p!=NULL){p = p->next;}while(p!=q&&p!=NULL&&q!=NULL){p=p->next;if(p!=NULL){p=p->next;}q=q->next;}if(p==NULL){return false;}return true;
}

运行结果截图:
在这里插入图片描述

http://www.lryc.cn/news/233240.html

相关文章:

  • html书本翻页效果,浪漫表白日记本(附源码)
  • 【Mysql】学习笔记
  • 工作记录-------java文件的JVM之旅(学习篇)---好理解
  • 城市内涝对策,万宾科技内涝积水监测仪使用效果
  • android的通知使用
  • 001 opencv addWeighted
  • 2311rust,到35版本更新
  • UniPro提高集成能力 让客户专注于交付价值
  • Python---函数的作用,定义,使用步骤(调用步骤)
  • ERP智能管理系统:智能化的未来之路
  • c++ memccpy和 = 都可以用于赋值操作
  • Golang for 循环中的隐式内存别名问题
  • 2023年亚太杯数学建模思路 - 复盘:光照强度计算的优化模型
  • Unity——利用Mesh绘制图形
  • web3资讯及远程工作
  • 契约锁助力货物进出口全程无纸化,加速通关、降低贸易成本
  • 生活中的综合能力
  • ES5中实现继承
  • 面试鸭 - 专注于面试刷题的网站
  • 解决小程序路由超过10层限制
  • 【ceph】AI时代-数据为王-ceph存储将成为未来比较看好的赛道之一,为什么不all in一把学习一个不那么卷的赛道呢?
  • 《小·意·思》特殊符号
  • Web server failed to start. Port 8080 was already in use.
  • 蓝桥杯第三周算法竞赛D题E题
  • 国家大基金三期线上金融正式倒计时!11月17日,共启芯片产业新篇章
  • Chrony让内网设备时间同步
  • 在docker中部署MySQL
  • 百家网约车平台发布“阳光五条” 多举措加强司机保障
  • JXLS 导出多sheet,带页眉页脚
  • docker数据卷详细讲解及数据卷常用命令