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

leetcode 142. Linked List Cycle II

题目描述

哈希表解法

这个方法很容易想到,但需要O(N)的空间。

/*** 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*> hash_table;ListNode* cur = head;while(cur){if(hash_table.contains(cur))return cur;hash_table.insert(cur);cur = cur->next;}return nullptr;}
};

双指针法

判断是否有环只需要快慢指针就可以。要确定环的位置,还需要考虑数量关系。具体推导见LeetCode官方题解。

/*** 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) {if(head == nullptr || head->next == nullptr)return nullptr;ListNode* fast = head;ListNode* slow = head;while(fast->next && fast->next->next){fast = fast->next->next;slow = slow->next;if(fast==slow){ListNode* p1 = fast;ListNode* p2 = head;while(p1!=p2){p1 = p1->next;p2 = p2->next;}return p1;}}return nullptr;}
};

相关文章:

  • 【Django】中间件
  • RDD有哪几种创建方式
  • 软件研发效能体系建设
  • VLM-AD:通过视觉语言模型监督实现端到端自动驾驶
  • Mac中Docker下载与安装
  • Excel模版下载文件导入
  • 跨物种交流新时代!百度发布动物语言转换专利,听懂宠物心声
  • WHAT - Rust 智能指针
  • -CoderOilStationJava高级工程师
  • 嵌入式学习--江协51单片机day2
  • 卷积神经网络基础(七)
  • C++对象注册系统(1)实现原理
  • 【Python爬虫电商数据采集+数据分析】采集电商平台数据信息,并做可视化演示
  • DHCP理解
  • 【上位机——MFC】对象和控件绑定
  • Kubernetes安全策略实战:从PodSecurityPolicy到Pod Security Admission
  • leetcode文件级全局变量会在测试用例之间相互影响
  • FPGA----基于ZYNQ 7020实现定制化的EPICS通信系统
  • 第1章 算法设计基础
  • 305.出现最频繁的偶数元素
  • 马上评丨学术不容“近亲繁殖”
  • 领证不用户口本,还需哪些材料?补领证件如何操作?七问七答
  • 安徽亳州涡阳县司法局党组书记刘兴连落马
  • 异域拾异|大脚怪的形状:一项神秘社会学研究
  • 经济日报整版聚焦“妈妈岗”:就业路越走越宽,有温度重实效
  • 印度杰纳布河上游两座水电站均已重新开闸