1. 环形链表
给定一个链表的头节点 head ,判断链表中是否有环,如果链表中存在环则返回 true ,否则返回 false 。LeetCode 原题
示例链表如下:链表中有一个环,其尾部连接到第二个节点
2. 解法
最方便快捷的解法是快慢指针遍历,快指针如果能够追上慢指针,则一定有环
public boolean hasCycle(ListNode head) {
if (null == head || null == head.next) {
return false;
}
ListNode fast = head.next;
ListNode slow = head;
while (fast != slow) {
// 快指针出现 null 则无环
if (null == fast || null == fast.next) {
return false;
}
slow = slow.next;
fast = fast.next.next;
}
return true;
}