博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode】141 Linked List Cycle (java实现)
阅读量:6443 次
发布时间:2019-06-23

本文共 780 字,大约阅读时间需要 2 分钟。

hot3.png

Given a linked list, determine if it has a cycle in it.

Follow up:

Can you solve it without using extra space?

题目很明确,给定一个链表,判断其中是否包含一个环路。有个额外的要求就是不使用额外的空间。

假如说没有这个额外的要求,有什么方法可以解决呢?创建一个哈希表,遍历链表中的每个元素,并将其假如哈希表中,加入哈希表之前判断是否已经存在于哈希表中,如果存在,则说明存在环,否则就是不存在环。但是,这个哈希表却占用了O(n)的空间,因此该思路不符合要求。

这里,我们可以使用快慢引用的思路。两个引用都指向链表头,从链表头开始遍历,慢引用每次前进一步,而快引用每次前进两步,如果链表是有环路的,那么快引用终将追上慢引用;如果没有环路,那么遍历就会有结束的时候。代码如下:

 public class Solution {    public boolean hasCycle(ListNode head) {      if(head == null)        return false;      ListNode slow = head, fast = head;      while(fast.next != null && fast.next.next != null) {        slow = slow.next;        fast = fast.next.next;        if(slow == fast)          return true;      }      return false;    } }

转载于:https://my.oschina.net/styshoo/blog/546660

你可能感兴趣的文章
阿里云重磅推出物联网设备身份认证Link ID²
查看>>
手把手教你vue配置请求本地json数据
查看>>
作为数据科学家,我都有哪些弱点?
查看>>
JavaScript数据精度缺失问题
查看>>
百度开源情感分析Senta,让你更懂用户
查看>>
Java 几种线程状态之间的相互关系
查看>>
史上最全Redis面试49题(含答案):哨兵+复制+事务+集群+持久化等
查看>>
SQLServer之多表联合查询
查看>>
MSSQLSERVER系统数据库的迁移
查看>>
js原生简单的上传图片
查看>>
刷面试题之<<携程 地面业务 前端面试经历>>
查看>>
node笔记(一)-http模块,url模块
查看>>
小程序学习笔记(1)
查看>>
React-新的生命周期(React16版本)
查看>>
vue 博客优化,服务端渲染(SSR)指南
查看>>
交互式数据可视化-D3.js(三)比例尺
查看>>
Python--Redis实战:第二章:使用Redis构建Web应用:第一节:登录和cookie缓存
查看>>
关于响应式布局,你必须要知道的
查看>>
去掉antd的Input组件获取焦点时的蓝色边框
查看>>
redis创建主从复制的过程
查看>>