今天在leetcode刷题时,碰到一个好玩的简单题

其实这道题的题干非常简单易懂,但是涉及到了一个无限循环的可能。

从数学上来说,如何证明它是无限循环而不是无限不循环也许是一个有挑战性的问题,但是这里我还给不出证明。

我们仅讨论如何利用快慢指针判断无限循环。

如果一个数列从某项开始是无限循环的数列,那必然存在一个周期T,

使得f(x)==f(x+T);

我们可以让slow指针去遍历整个数列,直到它进入循环,slow每次自增1,而fast每次多自增一次,即fast自增两次。

当slow==T时,fast=2*slow=2T;即有slow[i]==fast[i],此时可判定无限循环

代码如下

bool isHappy(int n) {int slow = n, fast = n;do {slow = bitSquareSum(slow); cout << "slow=" << slow << endl;fast = bitSquareSum(fast); cout << "fast=" << fast

利用快慢指针判断循环相关推荐

  1. 证明利用快慢指针寻找有环单链表中环的起点算法

    问题:给定一个有环单链表,找到链表中环的起点,也就是说,找到下图中的单链表中Join点: (本图来源于http://www.cnblogs.com/xudong-bupt/p/3667729.html ...

  2. c 链表之 快慢指针 查找循环节点(转)

    上面分析了 根据这张图 推倒出 数学公式. 刚接触 不能一下弄明白.下面结合上面文章的分析.仔细推倒一下 , 一般设置 快指针 速度是 慢指针的2倍.及 快指针每次遍历两个指针, 慢指针每次遍历1个指 ...

  3. 快慢指针寻找循环节点

    循环链表找循环开始的节点: //设置快慢指针 快指针一次走两个 慢指针一次走一个 第一次相遇后将快指针重新放到头部 //快指针一次走一个 慢指针一次走一个 第二次相遇的位置就是环开始的位置 题目 14 ...

  4. 快慢指针判断链表中是否存在环以及查找环的起始位置

    判断链表中是否有环?    使用快慢指针, 慢指针一次走一步, 快指针一次走两步, 当快慢指针相遇时,说明链表存在环 为什么快指针每次走两步而慢指针每次走一步呢?    因为slow指针和fast指针 ...

  5. 快慢指针判断链表是否有环

    链表中很经常会出现的一个问题,判断链表是否有环,标准答案也已经烂熟于心,设置快慢指针,快指针每次走2步,慢指针每次走1步,如果两个指针可以相遇的话,证明链表有环,反之无环. 我有时候就犯嘀咕,它俩一定 ...

  6. 快慢指针判断单向链表是否有环及找环入口

    前言 关于快慢指针找环入口的这个问题,之前巴特跟我聊到过,印象比较深,今晚看学长在做的面试题,里面就出现了这个小知识. 发现有些东西不经意间就会用到,于是便出现此文.以后要努力做到善于总结,乐于总结. ...

  7. 使用快慢指针判断链表是否有环

    有时候在面试中可能会遇到叫我们判断链表中是否有环的问题,这个问题的解决方法也很多,这里我记录一下比较简单的使用快慢指针的方法: 使用快慢指针是指: 设置两个指针,一快一慢,快指的是每次移动两步,慢指针 ...

  8. 快慢指针判断链表中是否有环

    基本思想 快指针:从头开始移动 每次移动两个距离 慢指针:从头开始移动 每次移动一个距离 如果单链表中存在有环的话,那么快慢指针一定是会相遇的. 为什么?首先快指针在环内肯定是可以追上慢指针的对吧,那 ...

  9. 算法 --- 快慢指针判断链表是否有环

    解题思路: 分别设置2个指针(s,q)指向链表的头部,s每次指向下面一个(s = s.next),q每次指向下面2个(q = q.next.next). 如果存在环,q总会在某一时刻追上s /*** ...

最新文章

  1. BNN领域开山之作——不得错过的训练二值化神经网络的方法
  2. 智能车竞赛,AI视觉组赛题浅析
  3. Android中ViewPager+Fragment的基本使用
  4. 6.排序算法最优的时间复杂度
  5. SAP调用外部web service
  6. 【2019年07月08日】A股最便宜的股票
  7. python打印多个变量_在Python中打印多个变量
  8. java 析构方法_java析构方法详解
  9. linux ipc shmget 例子,Linux IPC之共享内存C 事例(示例代码)
  10. crontab定时器
  11. 电路基础学习笔记5:实验验证电压源与电流源的等效变换
  12. Maven 参数详情
  13. 插件77:获取Yahoo!股票新闻
  14. 蚂蚁p8多少股票_蚂蚁金服上市了,小编不想努力了。
  15. 技能Get·PC及手机微信聊天记录的备份与还原
  16. ArcGIS 矢量数据的空间校正和橡皮页变换
  17. 极限学习机(Extreme Learning Machine)(小白之路)
  18. 医疗行业售前100问之第3问:医院的常用信息系统有哪些?
  19. 2-4 Python初中级工程师技能要求和面试标准
  20. 计算机实现乘法和除法的运算逻辑

热门文章

  1. 导出Excel时出现80080005错误的解决办法
  2. word中图片为嵌入式格式时显示不全_word嵌入图片显示不全-不同类型文档中图片设置的几个小技巧...
  3. https 是什么意思?怎么把http改成https?
  4. 机器学习数据集(Dataset)汇总
  5. 关于jeecg 项目的莫名其妙的问题
  6. ubuntu14.04安装与软件重装说明
  7. Android反编译工具与实践
  8. 对话推荐系统CRS论文精读RevCore: Review-augmented Conversational Recommendation
  9. 【开发工具】Office Tool Plus 安装 Office
  10. App上架应用市场操作流程