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

环形链表-力扣

一、题目描述

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 

二、题解 

解题思路:

快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环,则一定会在环中相遇,否则快指针率先走到链表的末尾。

扩展:

 1、为什么快指针每次走两步,慢指针走一步可以?

假设链表带环,两个指针最后都会进入环,快指针先进环,慢指针后进环。当慢指针刚进环时,可能就和快指针相遇了,最差情况下两个指针之间的距离刚好就是环的长度。此时,两个指针每移动一次,之间的距离就缩小一步,不会出现每次刚好是套圈的情况,因此:在慢指针走到一圈之前,快指针肯定是可以追上慢指针的,即相遇。  

2、快指针一次走3步,走4步,...n步行吗? 

所以解决该题时,我们使用快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环,则一定会在环中相遇。

三、代码 

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;}
}

另一种写法:

 public boolean hasCycle2(ListNode head) {ListNode fast = head;ListNode slow = head;while (fast != null && fast.next !=null) {fast = fast.next.next;slow = slow.next;if(fast == slow) {break;}}if (fast == null||fast.next == null) {return false;}return true;}

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

相关文章:

  • 人生岁月年华
  • 电脑QQ如何录制视频文件?
  • python:多波段遥感影像分离成单波段影像
  • 天堂2游戏出错如何解决
  • 『力扣刷题本』:合并两个有序链表(递归解法)
  • C++设计模式_12_Singleton 单件模式
  • 67 内网安全-域横向smbwmi明文或hash传递
  • 面向对象(类/继承/封装/多态)详解
  • 【Python机器学习】零基础掌握GradientBoostingRegressor集成学习
  • 【tio-websocket】12、应用层包—Packet
  • OpenCV官方教程中文版 —— 模板匹配
  • 如何为3D模型设置自发光材质?
  • UI组件库基础
  • 数据结构与算法之矩阵: Leetcode 48. 旋转矩阵 (Typescript版)
  • 大厂面试题-JVM中的三色标记法是什么?
  • Leetcode—121.买卖股票的最佳时机【简单】
  • 【云原生】portainer管理多个独立docker服务器
  • Command集合
  • 【QT开发(17)】2023-QT 5.14.2实现Android开发
  • JVM相关面试题(每日一练)
  • OpenCV 相机相关函数
  • 微信小程序之投票管理
  • 23种设计模式【创建型模式】详细介绍之【建造者模式】
  • [量化投资-学习笔记002]Python+TDengine从零开始搭建量化分析平台-MA均线的多种实现方式
  • c语言 判断两个文件是否相同
  • 【2021集创赛】Arm杯三等奖:基于FPGA的人脸检测SoC设计
  • Java电商平台 - API 接口设计之 token、timestamp、sign 具体架构与实现|电商API接口接入
  • 【带头学C++】----- 1.基础知识 ---- 1.23 运算符概述
  • python爬虫分析基于python图书馆书目推荐数据分析与可视化
  • Java零基础入门-关系运算符