【数据结构】环状链表OJ题

✨✨✨专栏:数据结构     

  🧑‍🎓个人主页:SWsunlight

       

一、OJ 环形链表:

 快慢指针即可解决问题:

2情况:

  1. 快指针走到结尾(不是环)
  2. 快指针和尾指针相遇(是环的)

竟然是2倍关系,那么入环以后,也就是快指针走一次,与慢指针的距离会缩减1.知道N=0,相遇

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/typedef struct ListNode ListNode;
//快慢指针
bool hasCycle(struct ListNode *head) {ListNode* phead = head;ListNode* perv = head;//先判断perv是否为空,若是为空,则不会进继续计算,若是先判断perv下个节点,若是perv为NULL,就会导致对空指针进行解引用while(perv&&perv->next){perv = perv->next->next;phead = phead->next;if(perv == phead){return true;}}return false;
}

二、OJ  环形链表II:

思路:

比1多了一个条件要返回入环时的节点,实现环形相遇可以直接CV过来,要解决的是怎么找到入环节点:看下面式子,(X-1)*N意思不就是相遇后,(一直转圈)会回到这个点;N-C 不就是相当于L么;此时可以让head开始遍历 从头开始走,慢指针让他从相遇点继续走,当到如环点时必相遇;

 typedef struct ListNode ListNode;
//快慢指针
struct ListNode *detectCycle(struct ListNode *head) {ListNode* phead = head;ListNode* perv = head;//先判断perv是否为空,若是为空,则不会进继续计算,若是先判断perv下个节点,若是perv为NULL,就会导致对空指针进行解引用while(perv&&perv->next){perv = perv->next->next;phead = phead->next;if(phead == perv){while(perv!=head){perv = perv->next;head = head->next;}return head;}}return NULL;
}

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

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

相关文章

【工程师的自我修养】学会学习

一、为什么要学习 九年义务教育的学习是为了高考考上好大学,大学的学习是为了顺利毕业找到好工作。但找到工作后,大部分人已经不再主动学习了,只有工作中的被动学习。所谓逆水行舟、不进则退,虽然对于你个人来说还是会缓慢进步的&…

(CVE-2012-1823)PHP-CGI远程代码执行漏洞(80端口)

(CVE-2012-1823)PHP-CGI远程代码执行漏洞(80端口) 一、介绍二、漏洞影响三、原理四、漏洞复现 一、介绍 php-cgi是一个类似于消息的“传递者”,它接收web容器收到的http数据包,并把里面的数据交给PHP解释器…

清华发布Temporal Scaling Law,解释时间尺度对大模型表现的影响

众所周知, 语言模型调参! 预训练语言模型调参!! 预训练大语言模型调参!!! 简直就是一个指数级递增令人炸毛的事情,小编也常常在做梦,要是只训练几步就知道现在的超参…

python选修课期末考试复习

目录 记住输出小数的格式文件条件判断随想循环小星星计算金额猜数字折纸 函数找最大值 基础知识总结 记住输出小数的格式 输出a,保留两位小数 %.2f%a打开文件有点儿难,多记几遍格式吧 文件的格式后面有冒号,谨慎一点,都用双引号…

基于C++和Python基础的Golang学习笔记

文章目录 一、基础1.DOS命令2.变量(1)局部变量(2)全局变量(3)数据类型(4)指针(5)运算符(6)自定义数据类型 3.语句(1&#…

第十四篇:数据库设计精粹:规范化与性能优化的艺术

数据库设计精粹:规范化与性能优化的艺术 1. 引言 1.1 数据库设计在现代应用中的核心地位 在数字化的浪潮中,数据库设计如同建筑师手中的蓝图,是构建信息大厦的基石。它不仅关乎数据的存储与检索,更是现代应用流畅运行的生命线。…

Docker-运行时

文章目录 1. docker 的运行时1. Docker 守护进程(Docker Daemon):2. Docker 客户端(Docker Client):3. 容器运行时(Container Runtime):runc、containerd 和 CRI-O 的简单…

【SpringBoot】解锁后端测试新境界:学习Mockito与MockMvc的单元测试魔法

文章目录 前言:Java常见的单元测试框架一.Junit5基础二.SpringBoot项目单元测试1.添加依赖2.SpringBoot单元测试标准结构3.SpringBoot单元测试常用注解 三.单元测试中如何注入依赖对象1.真实注入(AutoWired、 Resource)2.Mock注入2.1.前言2.2…

资料总结分享:瀑布图,GESA,生存曲线

目录 瀑布图 GESA 生存曲线 瀑布图 肿瘤的瀑布图是一种常用的数据可视化方式,用于展示个体患者或研究样本的肿瘤基因组学数据,通常包括基因突变、基因拷贝数变异、染色体重排等信息。 颜色编码: 柱状图通常会使用颜色编码来表示不同类型…

Redis的数据淘汰策略——Java全栈知识(19)

Redis的数据淘汰策略 什么是数据淘汰策略 数据过期策略是 redis 中设置了 TTL 的数据过期的时候 Redis 的处理策略。数据淘汰策略是 Redis 内存不够的时候, 数据的淘汰策略:当 Redis 中的内存不够用时,此时在向 Redis 中添加新的 key, 那么…

SpringMVC dubbo项目测试用例

Spring 4.3 dubbo 2.7 nacos-spring-context1.1.2 nacos1.4 junit 4.13 单元测试用例执行时报错: 感觉是应为nacos和spring注解初始化顺序不同,造成的错误,未找到原因,只能用底层的办法先解决问题 java.lang.IllegalStateExcep…

Elasticsearch 8.1官网文档梳理 - 四、Set up Elasticsearch(ES 集群设置)

Set up Elasticsearch(ES 集群设置) Installing Elasticsearch 点击查看更多信息 Install Elasticsearch from archive on Linux or MacOS Install Elasticsearch with .zip on Windows Install Elasticsearch with Debian Package Install Elastic…

IEEE 802.11标准

在IEEE 802.11标准中使用了扩频通信技术,主要作用是使得抗干扰性更强。 IEEE 802.11在MAC层采用了CSMA/CA协议。 IEEE 802.1x是一种基于端口认证协议。

开源web在线数据库设计软件 —— 筑梦之路

GitHub - drawdb-io/drawdb: Free, simple, and intuitive online database design tool and SQL generator. 简介 DrawDB是一款多功能且用户友好的在线工具,允许用户轻松设计数据库实体关系。通过简单直观的界面,DrawDB使用户能够创建图表、导出SQL脚本…

入门理解python中的generator - 生成器

生成器 Generator 的定义 生成器(Generator)是一种特殊的函数,可以用于迭代地生成一系列值,而不需要一次性生成所有值并将它们存储在内存中。生成器在需要时逐个生成值,并在生成值后暂停执行,保留函数的状…

【C++】栈和队列

目录 前言 一、stack 1. 栈的定义 2. 成员函数 二、queue 1. 队列的定义 2. 成员函数 三、priority_queue 1. 优先队列的定义 2. 成员函数 前言 栈和队列是STL中很重要的两个容器,栈的特点是先进后出;队列的特点是先进先出。还有优先队列&…

kettle经验篇:MongoDB-delete插件问题

目录 项目场景 问题分析 解决方案 MongoDB Delete插件使用总结 项目场景 项目使用的ODS层数据库是MongoDB;在数据中心从DB层向ODS层同步数据过程中,发现有张ODS表在同步过程中,数据突然发生锐减,甚至于该ODS表数据清0。 同步…

算法设计与分析 例题 绘制Huffman树、循环赛、分治、最短路与动态规划

1.考虑用哈夫曼算法来找字符a,b,c,d,e,f 的最优编码。这些字符出现在文件中 的频数之比为 20:10:6:4:44:16。要求: (1)(4 分)简述使用哈夫曼算法构造最优编码的基本步骤; (2)&…

Oracle 流stream数据的复制

Oracle 流stream数据的复制 --实验的目的是捕获scott.emp1表的变化,将变化应用到远程数据库scott.emp1表中。 --设置初始化参数 AQ_TM_PROCESSES1 COMPATIBLE9.2.0 LOG_PARALLELISM1 GLOBAL_NAMEStrue JOB_QUEUE_PROCESSES2 --查看数据库的名称,我的为o…

5.11作业

1:有一个隧道,全长5公里,有2列火车,全长200米, 火车A时速 100公里每小时 火车B时速 50公里每小时 现在要求模拟火车反复通过隧道的场景(不可能2列火车都在隧道内运行…