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

【数据结构】单链表练习(有环)

1.判断是否是环形链表

141. 环形链表 - 力扣(LeetCode)

bool hasCycle(struct ListNode *head) 
{struct ListNode *fast,*slow;fast=slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;if(fast==slow)return true;}return false;
}

 2.环形链表2.0

142. 环形链表 II - 力扣(LeetCode)

思考:

slow走的路程:L+X

fast走的路程:L+N*C+X

2*(L+X)=L+N*C+X

L=N*C-X

结论:一个指针从相遇点开始走,另一个指针从起始点开始走,他们会在入口点相遇

struct ListNode *detectCycle(struct ListNode *head) 
{struct ListNode *fast,*slow;fast=slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;if(fast==slow){struct ListNode *meet=slow;struct ListNode *start=head;while(meet!=start){start=start->next;meet=meet->next;}return meet;}}return NULL;
}

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

相关文章:

  • 第十四章 Stream API
  • BGP服务器和多线服务器的不同之处
  • 驱动开发_2.字符设备驱动
  • 一键部署 Prometheus + Grafana + Alertmanager 教程(使用 Docker Compose)
  • Linux-【单体架构/分布式架构】
  • 10+热门 AI Agent 框架深度解析:谁更适合你的项目?
  • Mysql中存储引擎、索引、sql调优、锁、innodb引擎架构、MVCC多版本并发控制总结
  • Linux操作系统从入门到实战(十)Linux开发工具(下)make/Makefile的推导过程与扩展语法
  • next.js 登录认证:使用 github 账号授权登录。
  • 开发者工具在爬虫开发中的应用与面板功能详解
  • 【Keil】C/C++混合编程的简单方法
  • A*算法详解
  • 如何进行 Docker 数据目录迁移
  • 【C++】初识C++(1)
  • UDP和TCP的主要区别是什么
  • ADC采集、缓存
  • Kafka——生产者消息分区机制原理剖析
  • Kafka亿级消息资源组流量掉零故障排查
  • Eplan API SQL
  • 记录一条sql面试题2
  • Kafka 4.0 技术深度解析
  • 4G模块 A7670G打电话并且播报TTS语音
  • 2025-7-15-C++ 学习 排序(4)
  • 项目进度与预算脱节,如何进行同步管理
  • Flex 布局精讲
  • labview生成exe应用程序常见问题
  • RocketMq 启动_源码分析
  • 程序“夯住“的常见原因
  • 高并发四种IO模型的底层原理
  • linux的磁盘满了清理办法