implemented CycleDetectionII code in LinkedList (#1482)

* implemented CycleTectionII code

* changes made per review by appgurueu

* made the changes per review by appgurueu

* changes made per review by appgurueu

* did some changes

* fixed the test file with prettier

* Simplify code, renames for clarity

---------

Co-authored-by: Lars Mueller <appgurulars@gmx.de>
This commit is contained in:
Akshay Chavan
2024-01-04 18:19:13 +05:30
committed by GitHub
parent 1b66d86bd7
commit 5a7e8d1325
3 changed files with 97 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
import { findCycleStart } from '../CycleDetectionII'
import { Node } from '../SinglyLinkedList'
describe('Detect Cycle', () => {
it('no cycle', () => {
const head = new Node(1)
head.next = new Node(2)
expect(findCycleStart(head)).toBeNull()
})
it('simple cycle', () => {
const head = new Node(1)
head.next = new Node(2)
head.next.next = new Node(3)
head.next.next.next = head.next // Creates a cycle
expect(findCycleStart(head)).toBe(head.next)
})
it('long list with cycle', () => {
const head = new Node(1)
head.next = new Node(2)
head.next.next = new Node(3)
head.next.next.next = new Node(4)
head.next.next.next.next = new Node(5)
head.next.next.next.next.next = head.next.next // Cycle
expect(findCycleStart(head)).toBe(head.next.next)
})
it('cycle on last node', () => {
const head = new Node(1)
head.next = new Node(2)
head.next.next = head
expect(findCycleStart(head)).toBe(head)
})
})