题解 | #判断链表中是否有环#
判断链表中是否有环
http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
//单链表:最后一个节点的值是null,因此判断最后节点是否是null可作为判断是否是环形链表的依据之一。
//最简单的一种方式就是快慢指针,慢指针针每次走一步,快指针每次走两步,如果相遇就说明有环,如果有一个为空说明没有环。
public class Solution {
public boolean hasCycle(ListNode head) {
if(head == null )
return false;
//快慢指针
ListNode fast = head;
ListNode slow = head;
while(fast !=null && fast.next != null){
//慢指针每次走一步
slow = slow.next;
//快指针每次走两步
fast = fast.next.next;
//如果相遇,说明有环,直接返回true
if(slow == fast)
return true;
}
//否则就是没环
return false;
}
}
查看9道真题和解析