141题:判断链表是不是存在环!

 // 不能使用额外的存储空间
public boolean hasCycle(ListNode head) {
// 如果存在环的 两个指针用不一样的速度 会相遇
ListNode fastNode = head;
ListNode slowNode = head;
while (fastNode != null && fastNode.next != null) {
fastNode = fastNode.next.next;
slowNode = slowNode.next;
if (fastNode == slowNode) {
return true;
}
}
return false;
}

142 给定一个链表,返回链表环开始的地方,如果没有环,就返回空。

思路:链表头结点到链表环开始的地方的步数和两个链表相遇的地方到链表开始的地方的步数是一样多的!

 // 如果有环,相遇的时候与起点相差的步数等于从head到起点的步数
public ListNode detectCycle(ListNode head) {
ListNode pre = head;
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
if (slow == fast) {
while (pre != slow) {
slow = slow.next;
pre = pre.next;
}
return pre;
}
}
return null;
}

最新文章

  1. jmeter(四)Sample之http请求
  2. 【管理心得之三十八】如果“Q”不是高富帅,也吸引不了白富美“A”
  3. 烂泥:Linux源码包制作RPM包之Apache
  4. PHP递归小例子
  5. NOIP2013 提高组day2 2 花匠 动规 找拐点 树状数组
  6. php中定义网站根目录的常用方法
  7. 转之农民伯伯 IHttpHandler中使用Session实现原理[ASP.NET | IHttpHandler |IRequiresSessionState]
  8. response妙用
  9. JavaEE学习之设计模式
  10. 编写自己的单点登录(SSO)服务
  11. Linux目录结构详解
  12. python搭建opencv
  13. Cookie的几点忠告
  14. Windows下用PIP安装scipy出现no lapack/blas resources found
  15. 分布式高并发下Actor模型
  16. laravel中连表查询
  17. pgbench 安装试用
  18. Maven 系列 二 :Maven 常用命令,手动创建第一个 Maven 项目
  19. oracle序列的创建和使用
  20. C++代码文件名标准化处理工具

热门文章

  1. [计算机联网故障]WIFI接入正常,但是上网不正常(两种情况)
  2. easyUI 动态添加窗体
  3. HNOI模拟 Day3.22
  4. spring boot-启动及配置文件
  5. POJ 2590:Steps
  6. Mac系统打开命令行终端及查看操作系统版本号的方法
  7. android.content.ReceiverCallNotAllowedException: 解决方法
  8. centOS封装
  9. mac+php+xdebug
  10. Linux 系统管理命令 - uptime - 显示系统的运行时间及负载