141. 环形链表 + 快慢指针
141. 环形链表
LeetCode_141
题目描述
实现思路
- 使用快慢指针的方法可以判断是否有环。
- 需要注意的是:在起始的时候不能把快慢指针都指向head,否则永远不会进入循环!!!!
代码实现
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public boolean hasCycle(ListNode head) {
if(head == null || head.next == null)
return false;
ListNode slow = head, fast = head.next;//注意这里不能同时指向head,否则永远无法执行下面的语句
while(slow != fast){
if(slow == null || fast == null)
return false;
slow = slow.next;
fast = fast.next;
if(fast != null)
fast = fast.next;
else return false;
}
if(slow == fast)
return true;
return false;
}
}
Either Excellent or Rusty