使用快慢指针看是否相遇
如何确定一个链表中包含环,可以用两个指针来解决这个问题,两个指针,同时从链表的头节点出发,一个指针一次走一步,另一个指针一次走两步,如果走的快的指针追上了走的慢的指针,那么链表就包含环。
/**
* 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 cur = head;
ListNode cur2 = head.next;
while(cur2!=null && cur2.next!=null){//cur2.next不可以为Null,否则cur2.next.next就会是空指针异常
cur = cur.next;
cur2 = cur2.next.next;
if(cur==cur2) return true;
}
return false;
}
}