class Solution:
# @param {integer[]} nums
# @param {integer} target
# @return {integer[]}
def searchRange(self, nums, target):
if target in nums:
result = []
start = nums.index(target)
result.append(start)
times = nums.count(target)
result.append(start+times-1)
return result
else:
return [-1, -1]
二分查找法:
class Solution:
# @param {integer[]} nums
# @param {integer} target
# @return {integer[]}
def searchRange(self, nums, target):
left, right = 0, len(nums)-1
while left <= right:
mid = (left + right)/2
if target < nums[mid]:
right = mid-1
elif target > nums[mid]:
left = mid+1
else:
result = [0, 0]
if nums[left] == target: result[0] = left
if nums[right] == target: result[1] = right
for i in xrange(mid, right+1):
if nums[i] != target: result[1] = i - 1; break
for j in xrange(mid, left-1, -1):
if nums[j] != target: result[0] = j + 1; break
return result
return [-1, -1]