141.判断是否有环形列表
方法1:破解法:执行一分钟,判断是否最后为空
方法2:存节点。用set集合来存储节点,判断是否有重复(时间复杂度:O(n))
方法3:快慢指针:定义两个指针,slow,fast,slow+1,fast+2。如果有环,fast和slow会相遇,即相等。
方法3代码:
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode fast = head;
ListNode slow = head;
while(slow != null && fast != null && fast.next != null){//fast.next的判断:判断接下来是否还有数据
slow = slow.next;
fast = fast.next.next;
if(slow==fast)
return true;
}
return false;
}
}