74 搜索二维矩阵
python
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
m,n=len(matrix),len(matrix[0])
left=-1
right=m*n
while left+1<right:
mid=(left+right)//2
x=matrix[mid//n][mid%n]
if target==x:return True
if x<target:left=mid
if x>target:right=mid
return False
34 在排序数组中查找元素的第一个和最后一个位置
python
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
def lower_bound(nums: List[int], target: int) -> List[int]:
left,right=-1,len(nums)
while left+1<right:
mid=(left+right)//2
x=nums[mid]
if x<target:left=mid
else:right=mid
return right
start=lower_bound(nums,target)
if start==len(nums) or nums[start]!=target:return [-1,-1]
end=lower_bound(nums,target+1)-1
return [start,end]