Skip to content

Commit c15519e

Browse files
authored
Merge pull request #1087 from SuyashSingh01/main
Rename the file
2 parents 8ab7f5c + 43c3313 commit c15519e

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

Binary Search/Binary_search_arr.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* Finds the first and last occurrence of a target value in a sorted array.
3+
*
4+
* @param {number[]} N - The sorted array of numbers.
5+
* @param {number} T - The target value to search for.
6+
* @returns {number[]} An array containing the first and last index of the target value, or [-1,-1] if not found.
7+
*/
8+
const searchRange = function(N, T) {
9+
// Helper function to perform binary search on the array
10+
const find = (target, arr, left=0, right=arr.length) => {
11+
while (left <= right) {
12+
// Calculate the middle index
13+
let mid = left + right >> 1;
14+
// If the middle element is less than the target, move the left pointer to mid + 1
15+
if (arr[mid] < target) left = mid + 1;
16+
// If the middle element is greater than or equal to the target, move the right pointer to mid - 1
17+
else right = mid - 1;
18+
}
19+
// Return the left pointer, which will be the index of the target or the insertion point if not found
20+
return left;
21+
};
22+
23+
// Find the leftmost index of the target value
24+
let Tleft = find(T, N);
25+
// If the target value is not found in the array, return [-1,-1]
26+
if (N[Tleft] !== T) return [-1,-1];
27+
// Find the rightmost index of the target value
28+
return [Tleft, find(T+1, N, Tleft) - 1];
29+
};
30+

0 commit comments

Comments
 (0)