剑指offer——面试题56:链表中环的入口

Solution1:

非常经典的快慢指针套路题。下面这个链接讲解的很详细。其实问题的关键在于为什么快指针的速度一定是慢指针的2倍,3倍或4倍行不行??
快慢指针是一类很经典的算法,在这里贴一个讲解的比较清楚的博客:
https://www.cnblogs.com/songdechiu/p/6686520.html

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};
*/
class Solution {
public:ListNode* EntryNodeOfLoop(ListNode* pHead) {if(pHead == NULL || pHead->next == 0 || pHead->next->next == 0)return NULL;struct ListNode *slow = pHead->next, *fast = pHead->next->next; //slow走了1步到pHead->next的位置,fast走了2步while(fast != slow) {                                           //到了pHead->next->next的位置if(fast->next != NULL && fast->next->next != NULL) {slow = slow->next;fast = fast->next->next;}else return NULL;}struct ListNode *temp = pHead;while(temp != slow) {temp = temp->next;slow = slow->next;}return temp;}
};

关于快指针速度的解释

https://blog.csdn.net/xgjonathan/article/details/18034825

剑指offer——面试题56:链表中环的入口相关推荐

  1. 剑指offer(C++)——链表中环的入口结点

    代码如下: struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {} };/*思路:设 ...

  2. 《剑指Offer》23:链表中环的入口节点

    题目 若一个链表中包含环,如何找出的入口结点?如下图链表中,环的入口节点的节点3. 分析 一快(移两节点)一慢(移一节点)两指针判断链表是否存在环. 算出环有几个节点(上一步的两指针可知是在环中,让慢 ...

  3. 剑指offer(C++)-JZ23:链表中环的入口结点(数据结构-链表)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null. ...

  4. 剑指Offer - 面试题22. 链表中倒数第k个节点(快慢指针)

    1. 题目 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5 ...

  5. 剑指offer面试题[15]-链表中倒数第K个结点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路: 假设链表有n个结点,那么倒数第k个结点就是从头结点开始的第n-k+1个结点,我们只要从头结点开始往后走n-k+1步就可以了.那么问题来了: ...

  6. 剑指offer面试题22. 链表中倒数第k个节点(链表)

    题目描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...

  7. 剑指Offer - 面试题56 - I. 数组中数字出现的次数(异或,分组)

    1. 题目 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字. 要求时间复杂度是O(n),空间复杂度是O(1). 示例 1: 输入:nums = [4 ...

  8. 剑指offer——面试题57:删除链表中重复的结点

    剑指offer--面试题57:删除链表中重复的结点 Solution1: 删两遍,自己想的破算法.理论上时间复杂度也是O(n)O(n)O(n),并非最优解. /* struct ListNode {i ...

  9. 剑指offer——面试题37:两个链表的第一个公共结点

    剑指offer--面试题37:两个链表的第一个公共结点 20180906整理 Solution1: 时间复杂度为O(n2)O(n2)O(n^2)的垃圾算法 /* struct ListNode {in ...

最新文章

  1. escape sequence
  2. linux下安装oracle客户端,实现远程连接oracle库,导出数据表
  3. Filter_快速入门
  4. 预测:小程序入口预测汇总(8种可能)
  5. redis缓存穿透,缓存击穿与缓存雪崩详解
  6. MTK 驱动(63)---MTK TP驱动移植
  7. 分水岭算法(Watershed Algorithm)
  8. 多线程中的互斥控制程序代码_互斥锁解决 Python 中多线程共享全局变量的问题...
  9. macbook word插入公式快捷键 输入阿拉伯数字快捷键 快速打开访达快捷键
  10. python如何打开npy文件_操作python如何实现npy格式文件转换为txt文件
  11. 回溯法解决最大团问题
  12. 清理电脑垃圾软件哪个好?CleanMyMac深度清理电脑教程
  13. Linux:dd命令详解(df du命令参数)
  14. 大战在即!手机芯片巨头“All in”智能汽车,5G只是冰山一角
  15. 2018年的25个最佳数据可视化
  16. Linux直接在通过终端打开图片文件
  17. 应用程序正常初始化 0xc015002 失败
  18. 网格员计算机考试基础知识,网格员考题_请问下网格员考试的内容题目是什么要复习什么_淘题吧...
  19. a-upload上传图片
  20. BIOS设置光盘启动(上.Award bios)

热门文章

  1. PCD Lesson2:PCD文件的write
  2. vc++数字图像处理 自适应二值化程序
  3. 通过对极几何求解相机运动
  4. 土豆 android 缓存路径,#土豆记事#教你开发Android App之 —— Hello Android
  5. python装饰器class_Python装饰器dataclass详解
  6. linux修改管理员密码后保存,各类unix和linux管理员密码丢失解决方法
  7. java线程main异常,‘java.lang.NoSuchMethodError:main的原因’线程中的异常“main”’...
  8. mysql 5.1.6 安装包_Centos6 离线安装 MySQL5.5.55-1(附带安装包及 Perl 依赖包)
  9. java核心面试_前100多个核心Java面试问题
  10. osi模型_OSI模型