bool hasCycle(ListNode* head) {
unordered_set<ListNode*> seen;
for (ListNode* node = head; node; node = node->next) {
if (seen.count(node)) {
return true;
}
seen.insert(node);
}
return false;
}
public boolean hasCycle(ListNode head) {
Set<ListNode> seen = new HashSet<>();
for (ListNode node = head; node != null; node = node.next) {
if (seen.contains(node)) {
return true;
}
seen.add(node);
}
return false;
}
def has_cycle(head):
seen = set()
node = head
while node:
if node in seen:
return True
seen.add(node)
node = node.next
return False
function hasCycle(head: ListNode | null): boolean {
const seen = new Set<ListNode>();
for (let node = head; node; node = node.next) {
if (seen.has(node)) {
return true;
}
seen.add(node);
}
return false;
}
bool hasCycle(ListNode* head) {
ListNode* visited = new ListNode(0);
ListNode* node = head;
while (node) {
if (node->next == visited) {
return true;
}
ListNode* next = node->next;
node->next = visited;
node = next;
}
return false;
}
public boolean hasCycle(ListNode head) {
ListNode visited = new ListNode(0);
ListNode node = head;
while (node != null) {
if (node.next == visited) {
return true;
}
ListNode next = node.next;
node.next = visited;
node = next;
}
return false;
}
def has_cycle(head):
visited = ListNode(0)
node = head
while node:
if node.next is visited:
return True
nxt = node.next
node.next = visited
node = nxt
return False
function hasCycle(head: ListNode | null): boolean {
const visited = new ListNode(0);
let node = head;
while (node) {
if (node.next === visited) {
return true;
}
const next = node.next;
node.next = visited;
node = next;
}
return false;
}
bool hasCycle(ListNode* head) {
ListNode* slow = head;
ListNode* fast = head;
while (fast && fast->next) {
slow = slow->next;
fast = fast->next->next;
if (slow == fast) {
return true;
}
}
return false;
}
public boolean hasCycle(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
if (slow == fast) {
return true;
}
}
return false;
}
def has_cycle(head):
slow = head
fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
if slow is fast:
return True
return False
function hasCycle(head: ListNode | null): boolean {
let slow = head;
let fast = head;
while (fast && fast.next) {
slow = slow!.next;
fast = fast.next.next;
if (slow === fast) {
return true;
}
}
return false;
}
bool hasCycle(ListNode* head) {
if (!head) return false;
ListNode* tortoise = head;
ListNode* hare = head->next;
int power = 1;
int lam = 1;
while (hare && hare != tortoise) {
if (power == lam) {
tortoise = hare;
power *= 2;
lam = 0;
}
hare = hare->next;
lam++;
}
return hare != nullptr;
}
public boolean hasCycle(ListNode head) {
if (head == null) return false;
ListNode tortoise = head;
ListNode hare = head.next;
int power = 1;
int lam = 1;
while (hare != null && hare != tortoise) {
if (power == lam) {
tortoise = hare;
power *= 2;
lam = 0;
}
hare = hare.next;
lam++;
}
return hare != null;
}
def has_cycle(head):
if not head:
return False
tortoise = head
hare = head.next
power = 1
lam = 1
while hare and hare is not tortoise:
if power == lam:
tortoise = hare
power *= 2
lam = 0
hare = hare.next
lam += 1
return hare is not None
function hasCycle(head: ListNode | null): boolean {
if (!head) return false;
let tortoise = head;
let hare = head.next;
let power = 1;
let lam = 1;
while (hare && hare !== tortoise) {
if (power === lam) {
tortoise = hare;
power *= 2;
lam = 0;
}
hare = hare.next;
lam++;
}
return hare !== null;
}