From 22399def5e83ca7a9a128a1236d0b6c01f880b1d Mon Sep 17 00:00:00 2001 From: MayankSharma-2812 Date: Thu, 22 Jan 2026 11:55:40 +0530 Subject: [PATCH 1/2] Improve N-Queens input validation and solution counting clarity --- Backtracking/NQueens.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Backtracking/NQueens.js b/Backtracking/NQueens.js index 307c66dc04..18daad5611 100644 --- a/Backtracking/NQueens.js +++ b/Backtracking/NQueens.js @@ -1,8 +1,9 @@ class NQueens { constructor(size) { - if (size < 0) { - throw RangeError('Invalid board size') + if (size <= 0) { + throw RangeError('Board size must be a positive integer') } + this.board = new Array(size).fill('.').map(() => new Array(size).fill('.')) this.size = size this.solutionCount = 0 @@ -40,7 +41,7 @@ class NQueens { solve(col = 0) { if (col >= this.size) { this.solutionCount++ - return true + return } for (let i = 0; i < this.size; i++) { @@ -50,8 +51,6 @@ class NQueens { this.removeQueen(i, col) } } - - return false } printBoard(output = (value) => console.log(value)) { From a52354a1d6d170d1e59fa041cd389aaa142fe81b Mon Sep 17 00:00:00 2001 From: MayankSharma-2812 Date: Fri, 23 Jan 2026 09:46:44 +0530 Subject: [PATCH 2/2] Add input validation for empty or invalid array in binary search --- Search/BinarySearch.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Search/BinarySearch.js b/Search/BinarySearch.js index c5477cb7b9..475718129c 100644 --- a/Search/BinarySearch.js +++ b/Search/BinarySearch.js @@ -8,44 +8,46 @@ */ function binarySearchRecursive(arr, x, low = 0, high = arr.length - 1) { + if (!Array.isArray(arr) || arr.length === 0) { + return -1 + } + const mid = Math.floor(low + (high - low) / 2) if (high >= low) { if (arr[mid] === x) { - // item found => return its index return mid } if (x < arr[mid]) { - // arr[mid] is an upper bound for x, so if x is in arr => low <= x < mid return binarySearchRecursive(arr, x, low, mid - 1) } else { - // arr[mid] is a lower bound for x, so if x is in arr => mid < x <= high return binarySearchRecursive(arr, x, mid + 1, high) } - } else { - // if low > high => we have searched the whole array without finding the item - return -1 } + + return -1 } + function binarySearchIterative(arr, x, low = 0, high = arr.length - 1) { + if (!Array.isArray(arr) || arr.length === 0) { + return -1 + } + while (high >= low) { const mid = Math.floor(low + (high - low) / 2) if (arr[mid] === x) { - // item found => return its index return mid } if (x < arr[mid]) { - // arr[mid] is an upper bound for x, so if x is in arr => low <= x < mid high = mid - 1 } else { - // arr[mid] is a lower bound for x, so if x is in arr => mid < x <= high low = mid + 1 } } - // if low > high => we have searched the whole array without finding the item + return -1 }