题目传送:​​https://leetcode.cn/problems/linked-list-cycle/​

运行效率

Leetcode141. 环形链表_快慢指针

代码如下

//第一种解法: 快慢指针法
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 != null && fast.next != null) {
if (fast == slow) {
return true;
}
fast = fast.next.next;
slow = slow.next;
}
return false;
}
}
// 第二种解法: set判重     如果有环的话,那肯定会出现重复
public boolean hasCycle(ListNode head) {
// 处理边界情况
if (head == null || head.next == null) {
return false;
}
HashSet<ListNode> set = new HashSet<>();
ListNode cur=head;
while(cur != null) {
if(set.contains(cur)) {
return true;
}
set.add(cur);
cur = cur.next;
}
return false;
}