Solution 1Floyd Cycle
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def hasCycle(self, head: Optional[ListNode]) -> bool:
runner = chaser = head
while runner:
runner = runner.next
if not runner:
return False
runner = runner.next
chaser = chaser.next
if runner == chaser:
return True
return False/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
public boolean hasCycle(ListNode head) {
ListNode runner = head, chaser = head;
while (runner != null && runner.next != null) {
runner = runner.next.next;
chaser = chaser.next;
if (runner == chaser) {
return true;
}
}
return false;
}/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {boolean}
*/
var hasCycle = function(head) {
let runner = head, chaser = head;
while (runner && runner.next) {
runner = runner.next.next;
chaser = chaser.next;
if ( runner === chaser ) {
return true;
}
}
return false;
};/**
* Definition for singly-linked list.
* class ListNode {
* val: number
* next: ListNode | null
* constructor(val?: number, next?: ListNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* }
*/
function hasCycle(head): boolean {
let runner = head;
let chaser = head;
while (runner && runner.next) {
runner = runner.next.next;
chaser = chaser.next;
if ( runner === chaser ) {
return true;
}
}
return false;
};
// This code works too, flawlessly! But the type checking is giving an annoying false error
// function hasCycle(head: ListNode | null): boolean {
// let runner: ListNode | null = head;
// let chaser: ListNode | null = head;
// while (runner && runner.next) {
// runner = runner.next.next;
// chaser = chaser.next; // chaser will never be null in this line
// if ( runner === chaser ) {
// return true;
// }
// }
// return false;
// };