From 851972dab25b7d198e06db947d0ff7c6e2ed0049 Mon Sep 17 00:00:00 2001 From: Hrithik-Gavankar Date: Sat, 14 Mar 2026 16:47:20 +0530 Subject: [PATCH 1/2] Array: Sort Colors Problem --- Array/SortColors.js | 54 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Array/SortColors.js diff --git a/Array/SortColors.js b/Array/SortColors.js new file mode 100644 index 0000000..b8b5708 --- /dev/null +++ b/Array/SortColors.js @@ -0,0 +1,54 @@ +/** + * Dutch National Flag Algorithm (3 pointers) + * + * Sort an array containing only 0, 1, and 2 in-place. + * 0 → Red + * 1 → White + * 2 → Blue + * + * Time Complexity: O(n) + * Space Complexity: O(1) + * + * Approach: + * [0 .... low-1] -> 0s + * [low ... mid-1] -> 1s + * [mid ... high] -> unsorted + * [high+1 ... n-1] -> 2s + * + * @param {number[]} nums + * @returns {number[]} sorted array (in-place) + */ +function sortColors(nums) { + let low = 0; + let mid = 0; + let high = nums.length - 1; + + while (mid <= high) { + if (nums[mid] === 0) { + // swap low & mid + [nums[low], nums[mid]] = [nums[mid], nums[low]]; + low++; + mid++; + } else if (nums[mid] === 1) { + mid++; + } else { + // nums[mid] === 2 + // swap mid & high + [nums[mid], nums[high]] = [nums[high], nums[mid]]; + high--; + } + } + + return nums; +} + + +// ---------------------- +// Test +// ---------------------- + +const arr = [2, 0, 2, 1, 1, 0]; + +const sorted = sortColors(arr); + +console.log("Sorted Array:", sorted); \ No newline at end of file From 6bf71fe7099e0cf7e700a4cbc998e70ffd0ea06d Mon Sep 17 00:00:00 2001 From: Hrithik-Gavankar Date: Sat, 14 Mar 2026 17:30:15 +0530 Subject: [PATCH 2/2] Array: generate Pascal's Triangle --- Array/PascalsTriangle.js | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Array/PascalsTriangle.js diff --git a/Array/PascalsTriangle.js b/Array/PascalsTriangle.js new file mode 100644 index 0000000..71bc0cc --- /dev/null +++ b/Array/PascalsTriangle.js @@ -0,0 +1,43 @@ +/** + * Pascal's Triangle + * + * Given an integer numRows, return the first numRows of Pascal's triangle. + * Each number is the sum of the two numbers directly above it. + * + * Time Complexity: O(n^2) + * Space Complexity: O(n^2) + * + * Approach: + * - Start with [[1]] + * - For each new row, first and last elements are always 1 + * - Inner elements = sum of two elements directly above (prev[j-1] + prev[j]) + * + * @param {number} numRows + * @returns {number[][]} first numRows of Pascal's triangle + */ +function generate(numRows) { + const triangle = [[1]]; + + for (let i = 1; i < numRows; i++) { + const prev = triangle[i - 1]; + const row = [1]; + + for (let j = 1; j < i; j++) { + row.push(prev[j - 1] + prev[j]); + } + + row.push(1); + triangle.push(row); + } + + return triangle; +} + + +// ---------------------- +// Test +// ---------------------- + +const result = generate(5); + +console.log("Pascal's Triangle:", result);