题目
For a given sorted array (ascending order) and a target number, find the first index of this number in O(log n) time complexity.
If the target number does not exist in the array, return -1.
Have you met this question in a real interview?
Yes
Example
If the array is [1, 2, 3, 3, 4, 5, 10], for given target 3, return 2.
Challenge
If the count of numbers is bigger than 2^32, can your code work properly?
Tags
Array Binary Search
思路
水题。二分,用res记录下来最左index即可。
代码
class Solution:
# @param nums: The integer array
# @param target: Target number to find
# @return the first position of target in nums, position start from 0
def binarySearch(self, nums, target):
# write your code here
start = 0; end = len(nums) - 1
res = -1
while start <= end:
mid = start + (end - start) // 2
if nums[mid] == target:
res = mid
end = mid - 1
elif nums[mid] < target:
start = mid + 1
else:
end = mid - 1
return res