题目
Given a sorted array of n integers, find the starting and ending position of a given target value.
If the target is not found in the array, return [-1, -1].
Have you met this question in a real interview?
Yes
Example
Given [5, 7, 7, 8, 8, 10] and target value 8,
return [3, 4].
Challenge
O(log n) time.
Tags
Array Sorted Array Binary Search
思路
两遍二分搜索。
代码
class Solution:
"""
@param: A: an integer sorted array
@param: target: an integer to be inserted
@return: a list of length 2, [index1, index2]
"""
def searchRange(self, A, target):
# write your code here
left = -1; right = -1
start = 0; end = len(A) - 1
while start <= end:
mid = start + (end - start) // 2
if A[mid] == target:
left = mid
end = mid - 1
elif A[mid] < target:
start = mid + 1
else:
end = mid - 1
start = 0; end = len(A) - 1
while start <= end:
mid = start + (end - start) // 2
if A[mid] == target:
right = mid
start = mid + 1
elif A[mid] < target:
start = mid + 1
else:
end = mid - 1
return [left, right]