zoukankan      html  css  js  c++  java
  • 数字在排序数组中出现的次数

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

    解题思路:
    通过二分法,分别找出这个数字第一次出现的位置和最后一次出现的位置

    python solution:

    # -*- coding:utf-8 -*-
    class Solution:
        def GetNumberOfK(self, data, k):
            first = self.getfirstk(data,k,0,len(data)-1)
            last = self.getlastk(data,k,0,len(data)-1)
            # print(first,last)
            if first>-1 and last>-1:
                return last-first+1
            else:
                return 0
    
        def getfirstk(self,data,k,start,end):
            if start>end:
                return -1
            mid = (start+end)//2
            middata = data[mid]
            if middata==k:
                if (mid>0 and data[mid-1]!=k) or mid==0:
                    return mid
                else:
                    end = mid-1
            elif middata>k:
                end = mid-1
            else:
                start = mid+1
            return self.getfirstk(data,k,start,end)
    
        def getlastk(self,data,k,start,end):
            if start>end:
                return -1
            mid = (start+end)//2
            middata = data[mid]
            if middata==k:
                if (mid<len(data)-1 and data[mid+1]!=k) or mid==len(data)-1:
                    return mid
                else:
                    start = mid + 1
            elif middata<k:
                start = mid+1
            else:
                end = mid-1
            return self.getlastk(data,k,start,end)
    
  • 相关阅读:
    groovy集合
    groovy函数、字符串、循环
    groovy运行程序和类型推断
    常见IT英语短语一
    常见IT英语单词
    认识Groovy
    maven入门
    springboot之内嵌tomcat修改端口号
    springboot手动配置数据源:
    img与父元素的间隙解决
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/10428096.html
Copyright © 2011-2022 走看看