这题应该还是考察二分法...吧,下面注释掉了直接遍历计数法
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param data int整型一维数组
# @param k int整型
# @return int整型
class Solution:
def GetNumberOfK(self , data: List[int], k: int) -> int:
i, j = 0, len(data) - 1
while i <= j:
mid = (i + j) // 2
if data[mid] <= k:
i = mid + 1
else:
j = mid - 1
# return i,j
right = i
# 若数组中无 k ,则提前返回
if j >= 0 and data[j] != k:
return 0
# 搜索左边界 left
i = 0
while i <= j:
mid = (i + j) // 2
if data[mid] < k:
i = mid + 1
else:
j = mid - 1
left = j
return right - left - 1
# class Solution:
# def GetNumberOfK(self , data: List[int], k: int) -> int:
# a = 0
# for i in data:
# if i == k:
# a +=1
# return a