【剑指Offer】37.数字在排序数组中出现的次数(Python实现)

题目描述

统计一个数字在排序数组中出现的次数。

解法一:分治法

# -*- coding:utf-8 -*-
class Solution:
    def GetNumberOfK(self, data, k):
        left=0
        right=len(data)-1
        leftk=self.getleftK(data,k,left,right)
        rightk=self.getrightK(data,k,left,right)
        return rightk-leftk+1
    def getleftK(self,data,k,left,right):###查找重复数字中最左边的那个数字位置
        while left<=right:
            middle=(left+right)//2
            if data[middle]<k:
                left=middle+1
            else:
                right=middle-1
        return left
    def getrightK(self,data,k,left,right):###查找重复数字最右边的那个数字位置
        while left<=right:
            middle=(left+right)//2
            if data[middle]<=k:
                left=middle+1
            else:
                right=middle-1
        return right
发布了70 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36936730/article/details/104690902