#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