寻找环——指针法

2023-11-06

一、在一条链中找环

bool judge(int a[])
{//存在返回ture,否则返回false
	int slow = 0, fast = 0;
	do {
		slow = a[slow];
		fast = a[a[fast]];
	} while (slow != fast && a[fast] == -1);
	if (a[fast]==-1)
		return false;
	return true;
}

思路:定义两个指针,一快一慢。
若存在环,则两指针一定相遇。

二、找环的环头

int Two_num(int a[])
{//存在环返回环头,否则返回-1
	int slow = 0, fast = 0;
	do {
		slow = a[slow];
		fast = a[a[fast]];
	} while (slow != fast);
	if (a[fast]==-1)
		return -1;
	fast = 0;
	do {
		slow = a[slow];
		fast = a[fast];
	} while (slow != fast);
	return slow;
}

分析:开始设a,环头设b,第一次相遇设c。
第一次相遇时fast指针的路径为a-b-c+n环,slow的路径为a-c,故a-b-c+n环=2*(a-c),即为a-b=(n-1)环+c-b。
故有fast减速重新出发,第二次相遇一定是b,即环头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

寻找环——指针法 的相关文章

  • 查找问题的利器 - Git Blame

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 原文 http gitbook liuhui998 c
  • 算法-倒置排序

    include
  • k8s学习-思维导图与学习笔记

    目录 前言 k8s思维导图 推荐 书籍 网站 课程 了解与安装 基础 资源调度 服务发布 配置管理 进阶 持久化存储 高级调度 高级 RBAC NetworkPolicy CKA 安全 CKS 前言 博主准备学习k8s 考个CKA和CKS证
  • 利用栈来破解迷宫问题

    利用栈来破解迷宫问题 对于迷宫类问题的破解 需要利用栈的思想 1 构思 假设 当前位置 指的是在搜索过程中某一时刻所在途中某个方块的位置 路径是最优走法 则求迷宫当中一条路径的思想便是 若当前位置可以通过 那么存放在 路径 中 可以通过的位
  • MySQL基础篇-第02章_MySQL环境搭建

    第02章 MySQL环境搭建 讲师 尚硅谷 宋红康 江湖人称 康师傅 官网 http www atguigu com 1 MySQL的卸载 步骤1 停止MySQL服务 在卸载之前 先停止MySQL8 0的服务 按键盘上的 Ctrl Alt

随机推荐

  • silverlight与Flash的技术比较[silverlight vs Flash] (转载)

    转载自 http bbs blueidea com thread 2773212 1 1 html 在以前的一篇 文章中我已经说明了Adobe和Microsoft在presentation layer的竞争关系 根据一些资料总结的功能 我针
  • 前端客户端日志上报功能开发

    客户端日志上报功能 描述 最近项目上需要做一个客户端重要报错信息上传保存至服务器 后台集中分析 需要前端支持 讲一下我这边处理的逻辑 仅供参考 1 项目初始化时定义一个console lr console lr function 2 组装要
  • 《FITNETS: HINTS FOR THIN DEEP NETS》论文整理

    目录 零 前言 一 Fitnet的目的及适用范围 1 目的 2 适用范围 3 背景及创新点 二 Hint Based Training思想 1 hint层与guided层 2 核心思想 三 Fitnet训练过程及效果 1 FItnet训练过
  • 边缘匹配matlab,几种简单常用的镜头边缘检测算法(matlab实现)

    在做镜头检测之前 为方便起见 我们先将一个视频短片提取出一定数量的图像序列 提取图片序列 video mmreader test avi Tag Reader NOF video NumberOfFrames Img diff zeros
  • 汇编程序设计与计算机体系结构软件工程师教程笔记:处理器、寄存器简介

    汇编程序设计与计算机体系结构 软件工程师教程 这本书是由Brain R Hall和Kevin J Slonka著 由爱飞翔译 中文版是2019年出版的 个人感觉这本书真不错 书中介绍了三种汇编器GAS NASM MASM异同 全部示例代码都
  • js怎么判断两数组之间有没有交集

    var arr1 1 2 3 4 5 6 7 8 1 var arr2 6 7 8 9 10 11 1 arr2 filter i gt return arr1 includes i 有两个数组 数组1和数组2 想实现的需求 判断数组2里有
  • 数据包在网络中的传输过程详解

    我们当今使用电子设备都离不开网络 通过网络我们可以聊天 玩游戏 看电影都操作 网络的本质就是交换数据 本文我们就来看下数据是如何在网络中传输的 计算机网络模型 现在有两种计算机网络模型 分别为OSI七层模型和TCP IP四层模型 OSI将计
  • MySQL中的触发器

    MySQL中的触发器 在数据库应用中 我们经常需要对数据进行某些操作 并在操作完成后进行相应的处理 这时候 可以使用触发器来实现这些功能 MySQL提供了强大的触发器功能 本文将带您深入了解MySQL中的触发器 什么是触发器 触发器是一种特
  • HierarchicalDataTemplate

    针对具有分层数据结构的控件设计的 比如说TreeView 相当于可以每一个层级上做DataTemplate XmlDataProvider 数据源 写在Resources下
  • Redis——缓存击穿、穿透、雪崩

    Redis的缓存击穿 穿透 雪崩 这几个概念是设计大流量接口时所需要考虑的问题 也是面试常问的Redis相关的基础知识 本篇捋一下这几个概念 做一个小结 大家都知道 计算机的瓶颈之一就是IO 为了解决内存与磁盘速度不匹配的问题 产生了缓存
  • 操作系统作业 - 内存管理 - 请求分页分配方式模拟

    内存管理 请求分页分配方式 设计方案报告 文末有源码 文章目录 内存管理 请求分页分配方式 设计方案报告 1 项目需求 1 1 基本任务 1 2 功能描述 1 3 项目目的 2 开发环境 3 项目结构 4 操作说明 5 系统分析 5 1 置
  • 洛谷题单 算法1-7 搜索

    USACO08FEB Meteor Shower S 题目描述 Bessie hears that an extraordinary meteor shower is coming reports say that these meteor
  • 【千律】C++基础:宽窄字节字符串的相互转换与控制台输出

    方案1 include
  • 怎么调节手机的刷新率_二分钟科普:手机上的“高刷新率”

    上回粗略带过屏幕刷新率 这篇将会以更简单的叙述 介绍手机屏幕刷新率和插帧 本期关键词 屏幕刷新率 FPS 插帧 正文 不纠结这是谁带节奏 进步是必然的 屏幕刷新率 通常单位为Hz 是一个硬件固定数值 例如一部手机的屏幕刷新率为120Hz 那
  • Conditional DETR spatial attention & content attention可视化(二)

    就是将attention图通过加权叠加 叠加到原图上 要通过cv2 applyColorMap 将attention的单通道图转为三通道图 将attention中一些小的值置0 不然叠加之后会干扰原图 产生色差 至于蓝色 是通过cv2 ap
  • tcp retransmission 出现的原因_TCP 协议快被淘汰了,UDP 协议才是新世代的未来?

    公众号关注 运维之美 设为 星标 每天带你玩转 Linux TCP 协议可以说是今天互联网的基石 作为可靠的传输协议 在今天几乎所有的数据都会通过 TCP 协议传输 然而 TCP 在设计之初没有考虑到现今复杂的网络环境 当你在地铁上或者火车
  • 多线程:什么是同步与异步?二者的区别

    今天看到一道面试题 同步与异步有什么区别 同步 异步 这个在我们学习多线程的时候 会接触到这个概念 后面所学的一系列多线程知识运用也是以这两个点开展的 由于学习的时候囫囵吞枣 导致我对这两个概念没法准确说出定义及其区别 现在记录一下 如果光
  • 修改主机名(/etc/hostname和/etc/hosts区别)

    ubuntu永久修改主机名 1 查看主机名 在Ubuntu系统中 快速查看主机名有多种方法 其一 打开一个GNOME终端窗口 在命令提示符中可以看到主机名 主机名通常位于 符号后 其二 在终端窗口中输入命令 hostname或uname n
  • Visual Stdio 2017 Community 中文版哪里下载方便

    嫌官网不好用的话 推荐先下一个腾讯电脑管家 腾讯电脑管家自带了软件下载中心 可以去那里获取Visual Stdio 2017 Community 具体步骤如下 1 安装腾讯电脑管家 2 打开腾讯电脑管家 点击软件管理 如图 3 搜索Visu
  • 寻找环——指针法

    一 在一条链中找环 bool judge int a 存在返回ture 否则返回false int slow 0 fast 0 do slow a slow fast a a fast while slow fast a fast 1 if