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
.
Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4
Input: nums = [-1,0,3,5,9,12], target = 2 Output: -1 Explanation: 2 does not exist in nums so return -1
- 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]
.
impl Solution {
pub fn search(nums: Vec<i32>, target: i32) -> i32 {
let mut head = 0;
let mut tail = nums.len() as i32 - 1;
while head <= tail {
if target == nums[(head + tail) as usize / 2] {
return (head + tail) / 2;
} else if target > nums[(head + tail) as usize / 2] {
head = (head + tail) / 2 + 1;
} else if target < nums[(head + tail) as usize / 2] {
tail = (head + tail) / 2 - 1;
}
}
-1
}
}