判断给定的链表中是否有环。如果有环则返回true,否则返回false。

解题思路:设置两个指针,slow和fast,fast每次走两步,slow每次走一步,如果有环的话fast一定会追上slow,判断fast==slow或者fast.next==slow即可判断

 class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
} public class test1 {
public boolean hasCycle(ListNode head) {
if(head==null || head.next==null){
//头指针为空或者只有头节点,无环
return false;
}
ListNode slow,fast = new ListNode(0);
slow = head.next;
fast = head.next.next;
while(true){
if(fast==null||fast.next==null){
//fast走到链表尾
return false;
}else if(fast.next==slow || fast==slow){
return true;
}else{
slow = slow.next;// slow每次走一步
fast = fast.next.next;//fast每次走两步
}
}
} public static void main(String[] args) {
ListNode node1 = new ListNode(1),node2 = new ListNode(2),node3 = new ListNode(3),node4=new ListNode(4);
node1.next=node2;
node2.next=node3;
node3.next=node4;
node4.next=node1;
test1 test = new test1();
System.out.println(test.hasCycle(node1));
}
}

最新文章

  1. mysql安装和配置
  2. 几个js函数
  3. 忠告初学者学习Linux系统的8点建议
  4. maven pom.xml
  5. jquery 序列化
  6. 转:Web页面通过URL地址传递参数常见问题及检测方法
  7. oracle:case when 语句的区间用法
  8. multiprocessing module in python(转)
  9. c#委托之最大
  10. 初识IOS
  11. struts2与struts1整合,Unable to load configuration. - interceptor-ref ... struts.xml
  12. SUPPORTDIR引用的文件的加入
  13. 记录下actionbar的翻译
  14. 在Javascript中什么是伪数组?如何将伪数组转化为标准数组?
  15. Spring集成RabbitMQ-使用RabbitMQ更方便
  16. 全面解读Java NIO工作原理(2)
  17. 【洛谷P1230】智力大冲浪
  18. mysql 在linux下的启动
  19. MVC3学习:利用mvc3+ajax检测用户是否被注册
  20. Servlet学习笔记(七)—— 自己定义过滤器的编写改进:自己定义实现FilterChain

热门文章

  1. Scala语法2
  2. HBase面试
  3. Logstash-CentOS7单机安装测试
  4. SQL从零到迅速精通【表连接查询】
  5. 自学java一路以来,心血心得整理分享
  6. Netty异步Future源码解读
  7. 如何使用Google Analytics Universal Analytics增强型电子商务
  8. JSON.parse()和JSON.stringfy()区别
  9. [SPDK/NVMe存储技术分析]014 - (NVMe over PCIe)Host端的命令处理流程
  10. centos配置ssh服务并简单测试