题目:
Given an array of integers nums
sorted in ascending order, find the starting and ending position of a given target
value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1]
.
Example 1:
Input: nums = [5,7,7,8,8,10]
, target = 8
Output: [3,4]
Example 2:
Input: nums = [5,7,7,8,8,10]
, target = 6
Output: [-1,-1]
代码:
class Solution(object):
def searchRange(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
n = len(nums)
index1 = -1 #起始下标
index2 = -1 #终止下标
i = 0
while i < n and nums[i] <= target :
if nums[i] == target and index1 == -1: #标记第一个下标
index1 = i
if nums[i] == target and index1 != -1 and i < n-1 and nums[i+1] != target : #查找第二个下标,判断不是数组末尾的情况
index2 = i
if nums[i] == target and index1 != -1 and i == n-1 : #查找第二个下标,判断是数组末尾的情况
index2 = i
i += 1
return [index1, index2]
顺序查找的算法,比较好理解,但没有满足题目要求的时间复杂度。没有使用二叉树的查找算法。