Day 1.16
环形链表
题目
代码
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode[] listNode = new ListNode[10000];
int count = 0;
while (head != null) {
for(int i = 0;i<=count;i++){
if(listNode[i] == head)
return true;
}
listNode[count] = head;
head = head.next;
count++;
}
return false;
}
}
结果
笔记
可以使用快慢指针法提高效率
public class Solution {
public boolean hasCycle(ListNode head) {
if (head == null || head.next == null) {
return false;
}
ListNode slow = head;
ListNode fast = head.next;
while (slow != fast) {
if (fast == null || fast.next == null) {
return false;
}
slow = slow.next;//慢指针
fast = fast.next.next;//快指针
}
return true;//快慢指针有相等的时候即快指针快了慢指针一周
}
}