Search for a Range
Description:
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].
Example
Given [5, 7, 7, 8, 8, 10] and target value 8,
return [3, 4].
Challenge
O(log n) time.
Code:
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
if not A:
return [-1, -1]
lA = len(A)
left = 0
right = lA-1
mid = int((left+right)/2)
while left<=right:
print("while")
print(left)
print(mid)
print(right)
if A[mid]>target:
right = mid-1
mid = int((left+right)/2)
if A[mid]<target:
left = mid+1
mid = int((left+right)/2)
if mid==right==left and A[mid]!=target:
return [-1, -1]
if A[mid]==target:
left = mid
right = mid
while lA-1>=left>=0 and A[left]==target:
left -= 1
left += 1
while lA-1>=right>=0 and A[right]==target:
right += 1
right -= 1
return [left, right]
return [-1, -1]