牛客题霸 判断链表中是否有环 C++题解/答案

题目描述

判断给定的链表中是否有环
扩展:
你能给出空间复杂度的解法么?

题解:

在这介绍一个简便的方法:快慢指针
就是:一个指针走两步,一个指针走一步
快慢指针中,因为每一次移动后,快指针都会比慢指针多走一个节点,所以他们之间在进入环状链表后,不论相隔多少个节点,慢指针总会被快指针赶上并且重合,此时就可以判断必定有环。
如果快指针到达NULL,说明链表以NULL为结尾,没有环
为什么要这样?
如果两个指针只走一步,那就有可能完美错开,无法相遇,所以要造成速度差,使得能相遇
除了能找环,还可以用来找环入口,这里就不细讲了

代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:bool hasCycle(ListNode *head) {ListNode *l1=head;ListNode *l2=head;while((l1!=NULL)&&(l1->next!=NULL)){l2=l2->next;l1=l1->next->next;if(l2==l1)return 1;}return 0;}
};

牛客题霸 判断链表中是否有环 C++题解/答案相关推荐

  1. 牛客题霸 [二进制中1的个数] C++题解/答案

    牛客题霸 [二进制中1的个数] C++题解/答案 题目描述 输入一个整数,输出该数32位二进制表示中1的个数.其中负数用补码表示. 题解: 判断1的个数 x&(-x)=2^k 有点类似于树状数 ...

  2. 牛客题霸 [合并两个有序的数组] C++题解/答案

    牛客题霸 [合并两个有序的数组] C++题解/答案 题目描述 给出两个有序的整数数组 和 ,请将数组 合并到数组 中,变成一个有序的数组 注意: 可以假设 数组有足够的空间存放 数组的元素, 和 中初 ...

  3. 牛客题霸 [连续子数组的最大和] C++题解/答案

    牛客题霸 [连续子数组的最大和] C++题解/答案 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和 ...

  4. 牛客题霸 [二叉树的之字形层序遍历] C++题解/答案

    牛客题霸 [二叉树的之字形层序遍历] C++题解/答案 题目描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 例如: 给定的二叉树是{3,9,20, ...

  5. 牛客题霸 [用两个栈实现队列] C++题解/答案

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 题解: 我们都知道栈的性质是先进后出,队列是先进先出 我们用两个栈来模拟出队列 可以先用一个栈来存数,当 ...

  6. 牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案

    牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案 题目描述 据说著名犹太历史学家 Josephus 有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与 Josephus 及他的朋友躲到一个洞 ...

  7. 牛客题霸 [判断回文] C++题解/答案

    牛客题霸 [判断回文] C++题解/答案 题目描述 给定一个字符串,请编写一个函数判断该字符串是否回文.如果回文请返回true,否则返回false. 题解: 左右两端同时向中间缩 代码: class ...

  8. 牛客题霸 [删除链表的倒数第n个节点] C++题解/答案

    牛客题霸 [删除链表的倒数第n个节点] C++题解/答案 题目描述 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针 例如, 给出的链表为:1->2->3->4->5, ...

  9. 牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案

    牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案 题解: 搜索二叉树满足以下性质: 1.非空左子树的所以键值小于其根节点的键值 2.非空右子树的所有键值大于其根节点的键值 ...

最新文章

  1. Blender写实建筑场景制作学习教程 Exterior Visualization in Blender 2.9
  2. android版本号和对应的API等级
  3. python圣诞节快乐_用python让大白对你说圣诞快乐
  4. mysql错误:this authentication plugin is not supported
  5. 跟我一起写 Makefile(五)
  6. bash的配置文件以及加载的顺序
  7. 介绍Cassandra中的压缩
  8. shell 删除七日内日志_shell日志删除(超容量自动)
  9. 信息学奥赛一本通(1215:迷宫)
  10. 实战 | F1060防火墙透明模式典型组网配置案例(access)
  11. Tensor flow 实战Google深度学习框架 笔记摘要Pfour
  12. Java基础知识——JNI入门介绍
  13. 常用电子元器件参考资料(参数手册大全)
  14. 模式识别技术是人工智能的基础技术,模式识别技术的发展潜力
  15. 冬至时节饮食养生要注意“三多三少
  16. vue项目的导出功能
  17. Mac WebStorm卡顿解决
  18. linux中永久别名 mac,mac 设置 ll 等alias 并永久生效
  19. P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]
  20. 寻松翰独立4个PWM的MCU

热门文章

  1. c语言md5函数 linux,Linux下C语言计算文件的md5值(长度32)
  2. python循环语句嵌套_Python 循环语句
  3. js堆和栈的区别_几个例子理解不同数据类型的堆栈内存处理
  4. linux一键启动,Linux一键启动、停止、重启Tomcat sh脚本
  5. java字符串拼接例子_Java详解【String】+【StringBuilder vs StringBuffer】+【字符串拼接】...
  6. php 模板替换,使用PHPWord对Word文件做模板替换
  7. case when影响性能吗_字段为NULL会影响查询性能吗?
  8. 算法题目——二次函数三分求极值(HDU-3714)
  9. 使用神经网络进行稀疏采样_使用python+opencv进行神经网络迁移
  10. 法国 计算机金融 大学,捷报|GPA3.0,计算机转申金融,斩获法国顶级商学院录取!...