1.统计有序矩阵中的负数
给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并返回 grid 中 负数 的数目。
方法一:二分法
#方法一:二分法
def countNegatives(grid):res=0for nums in grid:left,right=0,len(nums) -1while left<=right:mid=(left+right)//2if nums[mid]>=0:left=mid+1 #找到第一个负数所在的下标elif nums[mid] < 0:right=mid-1res+=len(nums)-leftreturn res
2.两个数组间的距离值
给你两个整数数组 arr1 , arr2 和一个整数 d ,请你返回两个数组之间的 距离值 。
「距离值」 定义为符合此距离要求的元素数目:对于元素 arr1[i] ,不存在任何元素 arr2[j] 满足 |arr1[i]-arr2[j]| <= d 。
方法一:二分法
#方法一:二分法
def findTheDistanceValue(arr1,arr2,d):arr2=sorted(arr2) #先排序res=0for i in arr1:left,right=0,len(arr2)-1while left<=right:mid=(left+right)//2if arr2[mid]>i:right=mid-1else:left=mid + 1if right<0: if arr2[0]-i>d:res+=1elif left>len(arr2)-1:if i-arr2[-1]>d:res+=1elif arr2[left]-i>d and i-arr2[right]>d :res+=1 #最小间距都满足题意return res