0.题目
1. 两次二分查找 一次寻找第一个元素,一次寻找最后一个元素o(logn) o(1)
class Solution(object):
def searchRange(self, nums, target):
if not nums: return [-1,-1]
# 二分查找 一次找第一个位置,一次找最后一个位置
n = len(nums)
# 寻找第一个位置
l,r = 0,n-1 # 0,5
### 为什么是l<=r,因为如果l<r,[1,2,3],break时r是2的前一位,l==r,不符合条件。
### 如果l<r,在while中需要增加nums[mid]==target条件。
while l<=r:
mid = (l+r)//2
if nums[mid]<target:
· l = mid+1
else:
r = m