LeetCode 141. 环形链表 简单难度
**
141. 环形链表
**
给定一个链表,判断链表中是否有环。
如果链表中存在环,则返回 true 。 否则,返回 false 。
解题思路(两种方法):
方法一:用集合set以及set.find()方法。
**步骤一:**遍历链表时用find方法判断节点是否在set里,如果在就停止,并且这个节点就是环形的起点。
**步骤二:**如果不在,把节点插入到set里。
这个方法简单,但是空间复杂度并不是O(1),会浪费额外的空间。
接下来看看
方法二:用快慢指针遍历指针(这个方法的原理就跟我们跑步一样,如果是环形,就是跑操场,快的人总会绕过一圈追到慢的人;而如果是直线跑,那么快的人跟慢的人距离只会越拉越大)
步骤一:建立快慢指针指向链表表头
步骤二:判断指针目前的节点和指向的下个节点的值是否为null,如果不为空,就让快指针走两步。满指针走一步。
步骤三:判断快指针和满指针是否相等,如果相等就是存在环形。如果不等就继续回步骤二;
这个方法就是省空间,只要两个指针就搞定了。空间复杂度是O(1);
方法一:代码很简单,就不写了。
方法二:代码如下:
class Solution {public:bool hasCycle(ListNode *head) {//快慢指针ListNode *fast=head;ListNode *slow=head;while(fast!=NULL&&fast->next!=NULL){fast=fast->next->next;slow=slow->next;if(fast==slow){return true;}}return false;}
};
问题:如果是要返回环形的起点,那么我们应该改快慢指针呢?
我们来试跑一下吧
LeetCode 141. 环形链表 简单难度相关推荐
- LeetCode - 141. 环形链表
141. 环形链表 import java.util.Objects;class ListNode {int val;ListNode next;ListNode(int x) {val = x;ne ...
- LeetCode 141. 环形链表
原题链接 解题思路:快慢指针,如果快指针被慢指针追上一定是环形链表 /*** Definition for singly-linked list.* struct ListNode {* int va ...
- leetcode 141.环形链表 I - 142.环形链表 II 代码及指针相遇证明问题
⭐️ 环形链表 I 题目描述 给你一个链表的头节点 head ,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 如果链表中存在环 ,则返回 tru ...
- Leetcode 141.环形链表
难度:简单 频率:155 题目: 给你一个链表的头节点head,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环.为了表示给定链表中的环,评测系统内部使 ...
- leetcode - 141. 环形链表(哈希表)
给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. 示例 1: 输入: ...
- 32. Leetcode 141. 环形链表 (链表-双指针-环形链表)
给你一个链表的头节点 head ,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表 ...
- Leetcode 141.环形链表 (每日一题 20210617)
给定一个链表,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 ...
- [leetcode] 141.环形链表
给定一个链表,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引 ...
- Leetcode 141. 环形链表 解题思路及C++实现
解题思路: 定义快慢两个指针,当指针所指节点是同一个时,说明出现了环. /*** Definition for singly-linked list.* struct ListNode {* int ...
最新文章
- MySQL启动报:[ERROR] The server quit without updating
- Android 正则表达式
- Django,Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传
- centos中文乱码修改字符编码使用centos支持中文
- SpringMvc+Tomcat+Angular4 部署运行
- soapui和cxf的却别_根据wsdl文件用soapUi快速构建webService服务(有图有真相)
- PHP中表单没有问题但是$_FILES为空的解决办法
- JAVA实现简单的FTP服务器
- 应对对日软件开发的危机
- AudioClip 参数解析
- 利用人工智能分析视频行为
- android经典动态壁纸,android中自定义动态壁纸
- 综合评价与决策方法02——模糊综合评判法
- (35)zabbix Event acknowledgment事件确认
- 自下而上与自上而下的归并排序
- 〖TensorFlow2.0笔记21〗自定义数据集(宝可精灵数据集)实现图像分类+补充:tf.where!
- 2021版《数据结构》课程学习指南
- Html网页设计-羽毛球网站设计
- win10麦克风说话没声音_怎样选主播麦克风
- 匹配字符串-正则表达式