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]
.
因为是常规的没有duplicates的binary search, 所以参考[LeetCode] questions conclusion_ Binary Search1.1的思路和code即可.
Code
class Solution: def search(self, nums, target): l, r = 0, len(nums)-1 if target < nums[0] or target > nums[-1]: return -1 while l + 1 < r: mid = l + (r-l)//2 # l + r maybe overflow, above 2**32 if nums[mid] > target: r = mid elif nums[mid] < target: l = mid else: return mid if nums[l] == target: return l if nums[r] == target: return r return -1