#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param nums int整型一维数组
# @param k int整型
# @return int整型
#
class Solution:
def GetNumberOfK(self , nums , k ):
# write code here
if nums == None or len(nums) <= 0:
return 0
if len(nums) == 1:
if nums[0] == k:
return 1
else:
return 0
left_bd = self.get_left_bound(nums, k)
right_bd = self.get_right_bound(nums, k)
return right_bd - left_bd + 1
def get_left_bound(self, nums, k):
n = len(nums)
left = 0
right = n - 1
while left <= right:
mid = left + (right - left) // 2
#print ("Mid, mid val: ", mid, nums[mid])
if nums[mid] >= k:
right = mid - 1
else:
left = mid + 1
#print ("left, nums[left]: ", left, nums[left])
#print ("right, nums[right]: ", right, nums[right])
return left
def get_right_bound(self, nums, k):
n = len(nums)
left = 0
right = n - 1
while left <= right:
mid = left + (right - left) // 2
if nums[mid] <= k:
left = mid + 1
else:
right = mid - 1
#print ("right, nums[right]: ", right, nums[right])
return right