题目描述:
统计一个数字在排序数组中出现的次数。
Python代码:
方法1 count
class Solution:
def GetNumberOfK(self, data, k):
# write code here
return data.count(k)
方法2 不用count的计数方法
class Solution:
def GetNumberOfK(self, data, k):
# write code here
num = 0
for i in data:
if i==k:
num += 1
return num
方法3 二分查找
class Solution:
def GetNumberOfK(self, data, k):
# write code here
left = 0
right = len(data)-1
leftk = self.Getleftk(data, k, left, right)
rightk = self.Getrightk(data, k, left, right)
return rightk-leftk+1
def Getleftk(self, data, k, left, right): #查找重复数字中最左边的那个数字位置
while left<=right:
middle = (right+left)//2
if data[middle]<k:
left = middle+1
else:
right = middle-1
return left
def Getrightk(self, data, k, left, right): #查找重复数字中最右边的那个数字位置
while left<=right:
middle = (right+left)//2
if data[middle]<=k:
left = middle+1
else:
right = middle-1
return right