题目
统计一个数字在排序数组中出现的次数。
方法一:利用python的count函数
class Solution:
def GetNumberOfK(self, data, k):
# write code here
a=data.count(k)
return a
方法二:二分查找法
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
if not data:
return 0
if self.GetFirst(data,k)==-1 and self.GetLast(data,k)==-1:
return 0
return self.GetLast(data,k)-self.GetFirst(data,k)+1
def GetFirst(self,data,k):
low=0
high=len(data)-1
while low<=high:
mid=(low+high)//2
if data[mid]<k:
low=mid+1
elif data[mid]>k:
high=mid-1
else:
if mid==low or data[mid-1]!=k:
return mid
else:
high=mid-1
return -1
def GetLast(self,data,k):
low=0
high=len(data)-1
while low<=high:
mid=(low+high)//2
if data[mid]<k:
low=mid+1
elif data[mid]>k:
high=mid-1
else:
if mid==high or data[mid+1]!=k:
return mid
else:
low=mid+1
return -1