#704
Easy Algorithms Binary search
Array Binary Search
60.5% acceptance
Feb 21, 2026
13378
300
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.
Solution
Rust
Time O(n log n)
Space O(1)
/*
* 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.
*/
impl Solution {
pub fn search(nums: Vec<i32>, target: i32) -> i32 {
let (mut lo, mut hi) = (0i32, nums.len() as i32 - 1);
while lo <= hi {
let mid = lo + (hi - lo) / 2;
match nums[mid as usize].cmp(&target) {
std::cmp::Ordering::Equal => return mid,
std::cmp::Ordering::Less => lo = mid + 1,
std::cmp::Ordering::Greater => hi = mid - 1,
}
}
-1
}
}