141.环形链表
使用快慢指针:
定义两个指针,一快一慢,慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针在位置head,而快指针在位置head.next,这样,如果在移动的过程中,快指针反过来追上慢指针,就说明该链表有环,否则快指针将到达链表尾部,该链表不为环形链表
/*** 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 fast = head.next;ListNode slow = head;while(fast!=slow){if(fast == null || fast.next == null){return false;}fast = fast.next.next;slow = slow.next;}return true;}
}