题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。

A:创建两个指针,一个pFast一个pSlow指向链头,pFast一次走2步,pSlow一次走1步,如果两个指针必相遇,则链表有环

  把其中一个指针指向链表头部,另一个指针位置不变(它还在环内),两个指针每次各走1步,直到相遇的地方就是环的入口结点

 
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
ListNode* pFast = pHead;
ListNode* pSlow = pHead; while ((pFast != nullptr) && (pFast->next != nullptr) && (pSlow != nullptr))
{
pFast = pFast->next->next;
pSlow = pSlow->next;
if (pFast == pSlow)
{
break;
}
}
if ((pFast == nullptr) || (pFast->next == nullptr) || (pSlow == nullptr))
{
return nullptr;
}
pFast = pHead;
while (pFast != pSlow)
{
pFast = pFast->next;
pSlow = pSlow->next;
}
return pFast;
}
};

  

 

最新文章

  1. [bzoj1007][HNOI2008][水平可见直线] (斜率不等式)
  2. AFN设置请求超时时间
  3. c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
  4. 《Head First Servlet JSP》学习笔记一
  5. jQuery 怎么判断DIV出现在可视区域
  6. windows下ruby安装环境配置
  7. CentOS安装TortoiseSVN svn 客户端
  8. xml 和 json 的区别
  9. 线性时间常数空间找到数组中数目超过n/5的所有元素
  10. bootargs中的环境变量说明和一些常用的uboot命令
  11. jquery序列化元素
  12. MySQL read_only选项的作用
  13. linux log系统图
  14. springMVC在普通方法中调用service方法
  15. mybaties xml 的头部
  16. day 03 基本数据类型的使用、运算符
  17. numpy.asmatrix的用法
  18. word个人信息的一种处理方式
  19. j解决sparkr中使用某些r的原生函数 发生错误Error: class(objId) == "jobj" is not TRUE的问题
  20. 【Android】10.4 卡片视图

热门文章

  1. CodeGym自学笔记03——变量、数据类型
  2. for/in 语句用于循环对象属性
  3. vue 数组对象深拷贝 并根据某项属性排序
  4. 01爬取豆瓣网电影数据进行numpy的练习
  5. ElementUI Select下拉框定位问题!
  6. Java中保留两位小数之format
  7. vue3.0学习笔记
  8. idea等工具网盘下载地址
  9. iOS 导航栏消失
  10. TP3.2.x判断手机端访问,同一个域名在PC和手机端展示不同模板(半独立式网站)