Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
判断是否链表有环?
1 如果可以用其他空间,可以 HashMap , 顺着next检查,只要有重复的内容,就判断false。直到null 为true。
2 但是这道题目不能用其他空间。能够想到的就是指针本身做文章。就是fast和slow 指针。fast比slow 速度快一倍,只要有环,他们总会碰到一起。
3 这道题目遇到过就肯定会做了。技巧性偏多,面试的时候如果遇到,可以和面试官直接说遇到过并快速完成,让他来用其他题目来测试自己。
public class Solution {
public boolean hasCycle(ListNode head) {
if(head==null || head.next ==null){
return false;
}
ListNode slow = head;
ListNode fast = head.next;
while(fast.next!=null&&fast.next.next!=null){
slow=slow.next;
fast=fast.next.next;
if(slow == fast){
return true;
}
}
return false;
}
}