@(labuladong的算法小抄)[双指针]
leetcode 141. 环形链表
题目描述
解题思路
参考:labudadong的算法小抄 P64
本题就是判定一个链表中是否有环
用快慢指针。如果不含有环,快指针最终会遇到null,说明没有环;如果含有环,快指针最终会超过慢指针一圈,和慢指针相遇,说明有环。
/**
* 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) {
ListNode fast, slow;
/* 初始化快慢指针指向头结点 */
fast = slow = head;
while (fast != null && fast.next != null) {
//快指针每次前进两步
fast = fast.next.next;
//慢指针每次前进一步
slow = slow.next;
//如果快慢指针相遇,说明有环
if(fast == slow) return true;
}
return false;
}
}