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

环形链表Ⅱ-力扣

第一种解法时哈希表,set在使用insert插入时,会返回一个pair,如果pair的值为0,则插入失败,那么返回这个插入失败的节点,就是入环的第一个节点,代码如下:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *detectCycle(ListNode *head) {unordered_set<ListNode*> set;auto cur = head;while(cur != NULL){if(set.insert(cur).second){cur = cur->next;}else{return cur;}}return NULL;}
};

第二种快慢指针的写法,数学推导相当精妙,推到过程可以参考代码随想录-环形链表Ⅱ
参考代码:

class Solution {
public:ListNode *detectCycle(ListNode *head) {ListNode *slow = head, *fast = head;while (fast != nullptr) {slow = slow->next;if (fast->next == nullptr) {return nullptr;}fast = fast->next->next;if (fast == slow) {ListNode *ptr = head;while (ptr != slow) {ptr = ptr->next;slow = slow->next;}return ptr;}}return nullptr;}
};
http://www.lryc.cn/news/353186.html

相关文章:

  • 【microros】解决 microros安装过程中的 undefined reference to `fmt::v6 问题
  • 29. 相似矩阵,若尔当型
  • 【论文阅读】 YOLOv10: Real-Time End-to-End Object Detection
  • Python读写文件
  • docker-如何将容器外的脚本放入容器内,将容器内的脚本放入容器外
  • 算法训练营第三十九天 | LeetCode 738 单调递增的数字、LeetCode 968 监控二叉树
  • Hive语法学习总结
  • 【Linux】TCP协议【中】{确认应答机制/超时重传机制/连接管理机制}
  • solidworks画螺母学习笔记
  • WebGL的医学培训软件开发
  • 新时代AI浪潮下,程序员和产品经理如何入局AIGC领域?
  • OWASP top10--SQL注入(一)
  • java —— 类与方法
  • 【MySQL精通之路】InnoDB-启动选项和系统变量
  • 嵌入式linux系统中文件系统制作方法详解
  • AI爆文写作:要写文章爆,这47个爆文前缀少不了!
  • javas-core VS java-object-diff
  • dirsearch指令大全
  • C++基础:构建者设计模式
  • Swift 请求用户授权以跟踪其跨应用或网站的活动
  • 最新版npm详解
  • 超值分享50个DFM模型格式的素人直播资源,适用于DeepFaceLive的DFM合集
  • Python——一维二维字典数据转化为DataFrame的方法
  • unity中如何插入网页
  • 【负载均衡在线OJ项目日记】引入网络库和客户端用户路由功能
  • 【Vue3】env环境变量的配置和使用(区分cli和vite)
  • ACW石子合并-XMUOJ元素共鸣:唤醒神之眼 -区间DP
  • 大语言模型实战——搭建纯本地迷你版RAG
  • 内存分配算法
  • Hive运行错误