Binary Search
Description
Given a sorted (in ascending order) integer array nums
of n
elements and a target
value, write a function to search target
in nums
. If target
exists, then return its index, otherwise return -1
.
Example 1:
Input:nums
= [-1,0,3,5,9,12],target
= 9 Output: 4 Explanation: 9 exists innums
and its index is 4
Example 2:
Input:nums
= [-1,0,3,5,9,12],target
= 2 Output: -1 Explanation: 2 does not exist innums
so return -1
Note:
- You may assume that all elements in
nums
are unique. n
will be in the range[1, 10000]
.- The value of each element in
nums
will be in the range[-9999, 9999]
.
Solution(javascript)
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
const search = (nums, target) => {
const aux = (low, high) => {
if (low > high) {
return -1
}
const middle = Math.floor((low + high) / 2)
if (nums[middle] === target) {
return middle
} if (nums[middle] < target) {
return aux(middle + 1, high)
}
return aux(low, middle - 1)
}
return aux(0, nums.length - 1)
}