1. 程式人生 > >劍指Offer-53 數字在排序陣列中出現的次數

劍指Offer-53 數字在排序陣列中出現的次數

題目:

統計一個數字在排序陣列中出現的次數。例如輸入排序陣列[1, 2, 3, 3, 3, 3, 4, 5]和數字3,由於3在這個陣列中出現了4次,因此輸出4。
樣例
輸入:[1, 2, 3, 3, 3, 3, 4, 5] , 3
輸出:4

解答:

class Solution(object):
    def getNumberOfK(self, nums, k):
        """
        :type nums: list[int]
        :type k: int
        :rtype: int
        """
        number =
0 s = self.getFirstK(nums, k, 0, len(nums) - 1) e = self.getLastK(nums, k, 0, len(nums) - 1) if s >= 0 and e >= 0: number = e - s + 1 return number def getFirstK(self, nums, k, start, end): if start > end: return -1 mid =
int((start + end)/2) if nums[mid] == k: if mid > 0 and nums[mid - 1] != k or mid == 0: return mid else: end = mid - 1 else: if nums[mid] > k: end = mid - 1 else: start =
mid + 1 return self.getFirstK(nums, k, start, end) def getLastK(self, nums, k, start, end): if start > end: return -1 mid = int((start + end)/2) if nums[mid] == k: if mid < end and nums[mid + 1] != k or mid == end: return mid else: start = mid + 1 else: if nums[mid] > k: end = mid - 1 else: start = mid + 1 return self.getLastK(nums, k, start, end)