【题目描述】
统计一个数字在排序数组中出现的次数。
【解题思路】
二分法找到出现该元素的位置,然后从该位置起前向后向分别查找。用Python实现的代码如下:
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
cnt = 0
start, end = 0, len(data)-1
while start <= end:
mid = int((start + end) / 2)
if data[mid] > k:
end = mid - 1
elif data[mid] < k:
start = mid + 1
else:
cnt += 1
for i in range(mid-1, start-1, -1):
if mid-1 >= 0 and data[i] == k:
cnt += 1
for i in range(mid+1, end+1):
if mid+1 < len(data) and data[i] == k:
cnt +=1
return cnt
return 0