Algorithm
Problem Name: 704. Binary Search
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.
Example 1:
Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4
Example 2:
Input: nums = [-1,0,3,5,9,12], target = 2 Output: -1 Explanation: 2 does not exist in nums so return -1
Constraints:
1 <= nums.length <= 104
-104 < nums[i], target < 104
- All the integers in
nums
are unique. nums
is sorted in ascending order.
Code Examples
#1 Code Example with Java Programming
Code -
Java Programming
class Solution {
public int search(int[] nums, int target) {
int start = 0;
int end = nums.length - 1;
while (start < = end) {
int mid = (start + end) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
start = mid + 1;
} else {
end = mid - 1;
}
}
return -1;
}
}
Copy The Code &
Try With Live Editor
Input
Output
#2 Code Example with Javascript Programming
Code -
Javascript Programming
const search = function(nums, target) {
let start = 0;
let end = nums.length - 1;
while(start < = end){
let mid = parseInt((start + end) / 2);
if(nums[mid] === target) return mid;
if(nums[mid] > target) end = mid -1;
if(nums[mid] < target> start = mid + 1;
}
return -1;
};
Copy The Code &
Try With Live Editor
Input
Output
#3 Code Example with Python Programming
Code -
Python Programming
class Solution:
def search(self, nums: List[int], target: int) -> int:
return bisect.bisect_left(nums, target) if target in nums else -1
Copy The Code &
Try With Live Editor
Input
#4 Code Example with C# Programming
Code -
C# Programming
namespace LeetCode
{
public class _0704_BinarySearch
{
public int Search(int[] nums, int target)
{
int lo = 0, hi = nums.Length - 1;
while (lo < = hi)
{
var mid = lo + (hi - lo) / 2;
if (nums[mid] == target) return mid;
else if (nums[mid] > target) hi = mid - 1;
else lo = mid + 1;
}
return -1;
}
}
}
Copy The Code &
Try With Live Editor
Input
Output