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

剖解环形链表1

环形链表

在这里插入图片描述

思路:我们知道在操场上跑步,若一个人跑的快,另一个人跑得慢,那么就一定会有相遇的那一刻,两人站在同一个位置,所以我们可以分别定义快慢指针,若快指针和慢指针相逢,就说明该链表是环形链表
1.若链表为空或者链表只有一个节点,则不可能有环,即

if ( head == null || head.next==null){
return false;
}

2.若链表有多个节点,此时分别定义快慢指针,即

ListNode fast=head;
ListNode slow=head;

3.在快指针和快指针的next域不为空的情况下,
让快指针每次走两步,慢指针每次走一步,若两指针指向的节点地址相同,则说明成环,即

while(fast!=null && fast.next!=null){
fast=fast.next.next;
slow=slow.next;
if(fast==slow){
return true;
}
}

完整代码如下:

public boolean hasCycle(ListNode head) {if(head==null){return false;}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;}

相关文章:

  • 【nrm】npm 注册表管理器
  • STM32精确控制步进电机
  • 2025 年 IT 前景:机遇与挑战并存,人工智能和云计算成重点
  • Java面试:ArrayList 和 LinkedList 的区别是什么?谈谈你对ArrayList和LinkedList的理解
  • 基于深度学习的学情智能监测系统设计与实现(PYQT+YOLOv8+训练数据集+论文+部署文档)
  • we3.0里的钱包是什么?
  • 基于python+flask+mysql的音频信息隐藏系统
  • Llama 3.2 90B刚开源就被Molmo-72B全面击败!
  • SpringCloud入门
  • Java Web应用升级故障案例解析
  • 高效处理大规模数据:MATLAB实践指南
  • 828华为云征文|部署敏捷项目管理系统工具 ZenTao
  • 千亿大数据不为人知的数据库缺陷——中看不中用的设置——MySQL大数据优化
  • 第17周 第3章Servlet开发应用实践 ---Servlet启动时加载与错误页面设置
  • 车辆重识别(利用扩散模型合成有效数据进行行人再识别预训练)论文阅读2024/9/27
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 2017届校招提前批面试回顾
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 2019.2.20 c++ 知识梳理
  • Joomla 2.x, 3.x useful code cheatsheet
  • LeetCode18.四数之和 JavaScript
  • leetcode46 Permutation 排列组合
  • leetcode讲解--894. All Possible Full Binary Trees
  • MQ框架的比较
  • MySQL数据库运维之数据恢复
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python3爬取英雄联盟英雄皮肤大图
  • springMvc学习笔记(2)
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 诡异!React stopPropagation失灵
  • 后端_ThinkPHP5
  • 基于遗传算法的优化问题求解
  • 看域名解析域名安全对SEO的影响
  • 那些被忽略的 JavaScript 数组方法细节
  • 判断客户端类型,Android,iOS,PC
  • 前嗅ForeSpider中数据浏览界面介绍
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 运行时添加log4j2的appender
  • 阿里云服务器如何修改远程端口?
  • 大数据全解:定义、价值及挑战
  • 交换综合实验一
  • ‌Excel VBA进行间比法设计
  • #{}和${}的区别是什么 -- java面试
  • #Linux(权限管理)
  • #每天一道面试题# 什么是MySQL的回表查询
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (~_~)
  • (003)SlickEdit Unity的补全
  • (06)Hive——正则表达式
  • (12)目标检测_SSD基于pytorch搭建代码
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解