题解 | #数字在升序数组中出现的次数#

数字在升序数组中出现的次数

https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @param k int整型 
# @return int整型
#
class Solution:
    count = 0
    def GetNumberOfK(self , nums: List[int], k: int) -> int:
        # write code here
        mid = len(nums) // 2
        if len(nums) == 0:
            return self.count
        # 等于k 去除k 再加
        # 归并排序->分治
        elif nums[mid] == k:
            self.count += 1
            return self.GetNumberOfK(nums[:mid]+nums[mid+1:],k)
        elif nums[mid] < k:
            return self.GetNumberOfK(nums[mid+1:], k)
        elif nums[mid] > k:
            return self.GetNumberOfK(nums[:mid], k)


    # 法二 调用 self.bisearch(data, k + 0.5) - self.bisearch(data, k - 0.5)
    def binsearch(self, data, k):
        left, right = 0, len(data) - 1
        # 第一种写法 left <= right 判定等于
        while left <= right:
            mid = (left + right) // 2
            # 重新划分边界 从mid开始
            if data[mid] < k:
                left = mid + 1
            elif data[mid] > k:
                right =  mid - 1
        return left

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务