**

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. 环形链表 简单难度相关推荐

  1. LeetCode - 141. 环形链表

    141. 环形链表 import java.util.Objects;class ListNode {int val;ListNode next;ListNode(int x) {val = x;ne ...

  2. LeetCode 141. 环形链表

    原题链接 解题思路:快慢指针,如果快指针被慢指针追上一定是环形链表 /*** Definition for singly-linked list.* struct ListNode {* int va ...

  3. leetcode 141.环形链表 I - 142.环形链表 II 代码及指针相遇证明问题

    ⭐️ 环形链表 I 题目描述 给你一个链表的头节点 head ,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 如果链表中存在环 ,则返回 tru ...

  4. Leetcode 141.环形链表

    难度:简单 频率:155 题目: 给你一个链表的头节点head,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环.为了表示给定链表中的环,评测系统内部使 ...

  5. leetcode - 141. 环形链表(哈希表)

    给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. 示例 1: 输入: ...

  6. 32. Leetcode 141. 环形链表 (链表-双指针-环形链表)

    给你一个链表的头节点 head ,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表 ...

  7. Leetcode 141.环形链表 (每日一题 20210617)

    给定一个链表,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 ...

  8. [leetcode] 141.环形链表

    给定一个链表,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引 ...

  9. Leetcode 141. 环形链表 解题思路及C++实现

    解题思路: 定义快慢两个指针,当指针所指节点是同一个时,说明出现了环. /*** Definition for singly-linked list.* struct ListNode {* int ...

最新文章

  1. MySQL启动报:[ERROR] The server quit without updating
  2. Android 正则表达式
  3. Django,Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传
  4. centos中文乱码修改字符编码使用centos支持中文
  5. SpringMvc+Tomcat+Angular4 部署运行
  6. soapui和cxf的却别_根据wsdl文件用soapUi快速构建webService服务(有图有真相)
  7. PHP中表单没有问题但是$_FILES为空的解决办法
  8. JAVA实现简单的FTP服务器
  9. 应对对日软件开发的危机
  10. AudioClip 参数解析
  11. 利用人工智能分析视频行为
  12. android经典动态壁纸,android中自定义动态壁纸
  13. 综合评价与决策方法02——模糊综合评判法
  14. (35)zabbix Event acknowledgment事件确认
  15. 自下而上与自上而下的归并排序
  16. 〖TensorFlow2.0笔记21〗自定义数据集(宝可精灵数据集)实现图像分类+补充:tf.where!
  17. 2021版《数据结构》课程学习指南
  18. Html网页设计-羽毛球网站设计
  19. win10麦克风说话没声音_怎样选主播麦克风
  20. 匹配字符串-正则表达式

热门文章

  1. 第一百零二节,JavaScript函数
  2. 4-10 :selected选中状态选择器
  3. 推荐一些不错的开源免费易上手的web前端框架
  4. GUI编程笔记(java)04:GUI(HelloWorld)窗体案例
  5. 嵌入式Linux驱动程序
  6. Struts 声明式异常处理和个性化异常处理(转)
  7. URL 贪吃蛇,考验手速的时候到了
  8. 安卓开发37:自定义的HorizontalScrollView类,使其pageScroll的时候焦点不选中
  9. MySQL学习(十五)
  10. 「洛谷P1343」地震逃生 解题报告