Chinaunix首页 | 论坛 | 博客
  • 博客访问: 229607
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 407
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-27 13:42
文章分类

全部博文(41)

文章存档

2016年(1)

2015年(18)

2014年(22)

我的朋友

分类: Java

2015-01-05 15:44:13

问题
    Given a linked list, determine if it has a cycle in it.
问题来源:

思路

    使用两个指针遍历链表,一个指针每次后移一位,另一个指针每次后移两位。如果两个相遇,那么有环,否则无环。
代码

点击(此处)折叠或打开

  1.     public static boolean hasCycle(ListNode head) {
  2.         boolean flag = true;
  3.         ListNode node1 = head;
  4.         ListNode node2 = head;
  5.         while (true) {
  6.             if (node1 == null || node2 == null) {
  7.                 flag = false;
  8.                 break;
  9.             }
  10.             node1 = node1.next;
  11.             node2 = node2.next;
  12.             if (node2 == null) {
  13.                 flag = false;
  14.                 break;
  15.             }
  16.             node2 = node2.next;
  17.             if (node1 == node2 && node1 != null) {
  18.                 flag = true;
  19.                 break;
  20.             }
  21.         }
  22.         return flag;
  23.     }

阅读(1440) | 评论(0) | 转发(0) |
0

上一篇:例题分析 -- Two Sum

下一篇:链接

给主人留下些什么吧!~~