题目链接:https://leetcode.cn/problems/linked-list-cycle/description/?envType=study-plan-v2&envId=top-100-liked
哈希
遍历过一个节点就标记一个节点,如果遍历到第二次,那就是环形链表
/**
* 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) {
while(head != null){
if(head.val == 666666){
return true;
}
head.val = 666666;
head = head.next;
}
return false;
}
}
双指针
如果快慢指针相遇,说明是环形链表
/**
* 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 slow = head;
//快指针
ListNode fast = head;
while(fast != null && fast.next != null){
slow = slow.next;
fast = fast.next.next;
//快慢指针相遇,说明是环形链表
if(slow == fast) return true;
}
return false;
}
}
还剩75题!