牛客题霸 判断链表中是否有环 C++题解/答案
牛客题霸 判断链表中是否有环 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的个数] C++题解/答案
牛客题霸 [二进制中1的个数] C++题解/答案 题目描述 输入一个整数,输出该数32位二进制表示中1的个数.其中负数用补码表示. 题解: 判断1的个数 x&(-x)=2^k 有点类似于树状数 ...
- 牛客题霸 [合并两个有序的数组] C++题解/答案
牛客题霸 [合并两个有序的数组] C++题解/答案 题目描述 给出两个有序的整数数组 和 ,请将数组 合并到数组 中,变成一个有序的数组 注意: 可以假设 数组有足够的空间存放 数组的元素, 和 中初 ...
- 牛客题霸 [连续子数组的最大和] C++题解/答案
牛客题霸 [连续子数组的最大和] C++题解/答案 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和 ...
- 牛客题霸 [二叉树的之字形层序遍历] C++题解/答案
牛客题霸 [二叉树的之字形层序遍历] C++题解/答案 题目描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 例如: 给定的二叉树是{3,9,20, ...
- 牛客题霸 [用两个栈实现队列] C++题解/答案
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 题解: 我们都知道栈的性质是先进后出,队列是先进先出 我们用两个栈来模拟出队列 可以先用一个栈来存数,当 ...
- 牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案
牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案 题目描述 据说著名犹太历史学家 Josephus 有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与 Josephus 及他的朋友躲到一个洞 ...
- 牛客题霸 [判断回文] C++题解/答案
牛客题霸 [判断回文] C++题解/答案 题目描述 给定一个字符串,请编写一个函数判断该字符串是否回文.如果回文请返回true,否则返回false. 题解: 左右两端同时向中间缩 代码: class ...
- 牛客题霸 [删除链表的倒数第n个节点] C++题解/答案
牛客题霸 [删除链表的倒数第n个节点] C++题解/答案 题目描述 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针 例如, 给出的链表为:1->2->3->4->5, ...
- 牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案
牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案 题解: 搜索二叉树满足以下性质: 1.非空左子树的所以键值小于其根节点的键值 2.非空右子树的所有键值大于其根节点的键值 ...
最新文章
- Blender写实建筑场景制作学习教程 Exterior Visualization in Blender 2.9
- android版本号和对应的API等级
- python圣诞节快乐_用python让大白对你说圣诞快乐
- mysql错误:this authentication plugin is not supported
- 跟我一起写 Makefile(五)
- bash的配置文件以及加载的顺序
- 介绍Cassandra中的压缩
- shell 删除七日内日志_shell日志删除(超容量自动)
- 信息学奥赛一本通(1215:迷宫)
- 实战 | F1060防火墙透明模式典型组网配置案例(access)
- Tensor flow 实战Google深度学习框架 笔记摘要Pfour
- Java基础知识——JNI入门介绍
- 常用电子元器件参考资料(参数手册大全)
- 模式识别技术是人工智能的基础技术,模式识别技术的发展潜力
- 冬至时节饮食养生要注意“三多三少
- vue项目的导出功能
- Mac WebStorm卡顿解决
- linux中永久别名 mac,mac 设置 ll 等alias 并永久生效
- P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]
- 寻松翰独立4个PWM的MCU
热门文章
- c语言md5函数 linux,Linux下C语言计算文件的md5值(长度32)
- python循环语句嵌套_Python 循环语句
- js堆和栈的区别_几个例子理解不同数据类型的堆栈内存处理
- linux一键启动,Linux一键启动、停止、重启Tomcat sh脚本
- java字符串拼接例子_Java详解【String】+【StringBuilder vs StringBuffer】+【字符串拼接】...
- php 模板替换,使用PHPWord对Word文件做模板替换
- case when影响性能吗_字段为NULL会影响查询性能吗?
- 算法题目——二次函数三分求极值(HDU-3714)
- 使用神经网络进行稀疏采样_使用python+opencv进行神经网络迁移
- 法国 计算机金融 大学,捷报|GPA3.0,计算机转申金融,斩获法国顶级商学院录取!...