Today I will be writing about how to solve the Binary Search algorithm problem on Leetcode.
The problem:
Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1.
You must write an algorithm with O(log n) runtime complexity.
var search = function(nums, target) {
};
Step 1. Create 2 pointers, left and right to point to the beginning and end of the array.
var search = function(nums, target) {
let left = 0;
let right = nums.length - 1
};
Considering the given example array [-1,0,3,5,9,12]
, left would point to -1 and right would point to 12.
Step 2. Create while loop.
We will set left = right because they will eventually meet. We also want to find a middle element.
var search = function(nums, target) {
//step 1. create 2 pointers, left and right to point to first and last elements.
let left = 0;
let right = nums.length - 1
while (left <= right){
let middle = left + Math.floor((right - left) / 2)
}
};
Step 3. Write if-statement to calculate middle element.
If the middle element === target, return middle.
var search = function(nums, target) {
let left = 0;
let right = nums.length - 1
while (left <= right){
let middle = left + Math.floor((right - left) / 2)
if(nums[middle] === target){
return middle
} else if (middle < target) {
left = middle + 1
} else {
right = middle - 1
}
}
};
Step 4. Return -1 if element does not match target.
var search = function(nums, target) {
let left = 0;
let right = nums.length - 1
while (left <= right){
let middle = left + Math.floor((right - left) / 2)
if(nums[middle] === target){
return middle
} else if (middle < target) {
left = middle + 1
} else {
right = middle - 1
}
}
return -1
};
Top comments (0)