From f51ffa7d3ca195803d4a62cc584c6f8f2d74da53 Mon Sep 17 00:00:00 2001 From: sowmya-rebbavarapu Date: Sat, 24 May 2025 12:16:59 +0530 Subject: [PATCH 1/2] Add linked list cycle detection tests and cycle creation utility --- .../linked-list/cycle/__tests__/cycle.test.js | 50 +++++++++++++++++++ .../linked-list/cycle/createCycle.js | 24 +++++++++ .../linked-list/cycle/detectCycle.js | 15 ++++++ 3 files changed, 89 insertions(+) create mode 100644 src/algorithms/linked-list/cycle/__tests__/cycle.test.js create mode 100644 src/algorithms/linked-list/cycle/createCycle.js create mode 100644 src/algorithms/linked-list/cycle/detectCycle.js diff --git a/src/algorithms/linked-list/cycle/__tests__/cycle.test.js b/src/algorithms/linked-list/cycle/__tests__/cycle.test.js new file mode 100644 index 0000000000..da76bc14c7 --- /dev/null +++ b/src/algorithms/linked-list/cycle/__tests__/cycle.test.js @@ -0,0 +1,50 @@ +import LinkedList from '../../../../data-structures/linked-list/LinkedList'; +import createCycle from '../createCycle'; +import detectCycle from '../detectCycle'; + +describe('Linked List Cycle Tests', () => { + let list; + + beforeEach(() => { + list = new LinkedList(); + }); + + test('detectCycle returns false on list with no cycle', () => { + list + .append(1) + .append(9) + .append(87) + .append(5) + .append(22); + expect(detectCycle(list)).toBe(false); + }); + + test('createCycle creates a cycle and detectCycle detects it', () => { + list + .append(1) + .append(9) + .append(87) + .append(5) + .append(22); + createCycle(list, 2); // Creates cycle linking tail to node at index 2 (value 87) + expect(detectCycle(list)).toBe(true); + }); + + test('createCycle with invalid position does not create cycle', () => { + list + .append(1) + .append(9) + .append(87); + createCycle(list, 10); // Invalid index, no cycle should be created + expect(detectCycle(list)).toBe(false); + }); + + test('createCycle with position -1 does not create cycle', () => { + list + .append(1) + .append(9) + .append(87); + createCycle(list, -1); // No cycle created + expect(detectCycle(list)).toBe(false); + }); +}); diff --git a/src/algorithms/linked-list/cycle/createCycle.js b/src/algorithms/linked-list/cycle/createCycle.js new file mode 100644 index 0000000000..88d43120db --- /dev/null +++ b/src/algorithms/linked-list/cycle/createCycle.js @@ -0,0 +1,24 @@ +export default function createCycle(linkedList, position) { + if (!linkedList.head || position < 0) return; + + let cycleNode = null; + let tail = linkedList.head; + let index = 0; + + while (tail.next) { + if (index === position) { + cycleNode = tail; + } + tail = tail.next; + index += 1; + } + + // For the last node + if (index === position) { + cycleNode = tail; + } + + if (cycleNode) { + tail.next = cycleNode; + } +} diff --git a/src/algorithms/linked-list/cycle/detectCycle.js b/src/algorithms/linked-list/cycle/detectCycle.js new file mode 100644 index 0000000000..e45a34729d --- /dev/null +++ b/src/algorithms/linked-list/cycle/detectCycle.js @@ -0,0 +1,15 @@ +export default function detectCycle(linkedList) { + let slow = linkedList.head; + let fast = linkedList.head; + + while (fast && fast.next) { + slow = slow.next; + fast = fast.next.next; + + if (slow === fast) { + return true; + } + } + + return false; +} From e562570c91645c73d9397f7d2341363303ab545b Mon Sep 17 00:00:00 2001 From: sowmya-rebbavarapu Date: Sat, 24 May 2025 16:37:21 +0530 Subject: [PATCH 2/2] Fix broken image in permutations README (Fixes #2049) --- src/algorithms/sets/permutations/README.md | 2 +- .../permutations/images/permutations-lock.png | Bin 0 -> 24836 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/algorithms/sets/permutations/images/permutations-lock.png diff --git a/src/algorithms/sets/permutations/README.md b/src/algorithms/sets/permutations/README.md index 4b6a268adc..85d72692d5 100644 --- a/src/algorithms/sets/permutations/README.md +++ b/src/algorithms/sets/permutations/README.md @@ -29,7 +29,7 @@ n * (n-1) * (n -2) * ... * 1 = n! When repetition is allowed we have permutations with repetitions. For example the the lock below: it could be `333`. -![Permutation Lock](https://www.mathsisfun.com/combinatorics/images/combination-lock.jpg) +![Permutation Lock](./images/permutations-lock.png) **Number of combinations** diff --git a/src/algorithms/sets/permutations/images/permutations-lock.png b/src/algorithms/sets/permutations/images/permutations-lock.png new file mode 100644 index 0000000000000000000000000000000000000000..91d137aa6ed49901c5af238c94042aaf76b81327 GIT binary patch literal 24836 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