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

leetcode hot100刷题日记——28.环形链表2

在这里插入图片描述
在这里插入图片描述

解答:
方法一:哈希表

class Solution {
public:ListNode *detectCycle(ListNode *head) {//哈希表unordered_set<ListNode *>visited;while(head!=nullptr){if(visited.count(head)){return head;}visited.insert(head);head=head->next;}return nullptr;}
};

时间复杂度:O(N)
空间复杂度:O(N)

方法二:快慢指针
在这里插入图片描述

class Solution {
public:ListNode *detectCycle(ListNode *head) {//快慢指针//快指针每次走两步,慢指针每次走一步//假设相遇点是图中紫色点//那么快指针走过的路=a+(b+c)*n+b=a+(n+1)*b+n*c//慢指针走过的路=a+b//快指针走过的路一定是慢指针的两倍//2a+2b=a+(n+1)*b+n*c//a=(n-1)b+nc//由于b+c是环长,所以a=(b+c)(n-1)+c//也就是说,相遇点和入环点之间的距离c+n-1圈环长,也就是从链表头到入环点的距离//我们找到slow和fast指针相遇的时候很容易(slow==fast)//这个时候如果再设置一个指针temp在表头,和慢指针同时每次走一步,那么temp和慢指针相遇的地方就在入环点ListNode *fast=head,*slow=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;if(slow==fast){ListNode *temp=head;while(temp!=slow){slow=slow->next;temp=temp->next;}return temp;}}return nullptr;}
};

时间复杂度:O(N)
空间复杂度:O(1)

http://www.xdnf.cn/news/716257.html

相关文章:

  • 【论文精读】2024 ECCV--MGLD-VSR现实世界视频超分辨率(RealWorld VSR)
  • 第十三章:预处理
  • Dify+MCP+MySQL:智能问数本地实践
  • 品优购项目(HTML\CSS)
  • 缓存架构方案:Caffeine + Redis 双层缓存架构深度解析
  • 2025年05月29日Github流行趋势
  • 【SOLUTION】Java 生成 TOTP 验证码
  • 政策与数字双赋能驱动:ERP助力外贸企业高质量发展路径解析
  • Maven-生命周期
  • 信创采购热潮下的隐忧:单一技术路线的市场垄断之困
  • Oracle RMAN自动恢复测试脚本
  • mongodb的安装使用
  • 20250529-C#知识:分部类和分部方法
  • 小白畅通Linux之旅-----Linux日志管理
  • 【芯片设计中的交通网络革命:Crossbar与NoC架构的博弈C架构的博弈】
  • 在Linux环境里面,Python调用C#写的动态库,如何实现?
  • Java集合操作常见错误与最佳实践
  • OSCP备战-SickOs1.2靶场详细步骤
  • 第九章 MQTT报文
  • C primer plus (第六版)第六章 编程练习第10题
  • 关于《DAHSF》即《火小兔智慧开发平台V2.0》的碎碎念
  • ADC同步采样
  • XMOS以全新智能音频及边缘AI技术亮相广州国际专业灯光音响展
  • 【NebulaGraph】查询案例(七)
  • 两个频率比较接近的简谐振动叠加后会产生拍形
  • C#学习:基于LLM的简历评估程序
  • 4. 算法与分析 (1)
  • 【Dify系列教程重置精品版】第十一章:Dify与slenium
  • Flutter下的一点实践
  • 手动移植FreeRTOS