zoukankan      html  css  js  c++  java
  • Go语言实现:【剑指offer】数字在排序数组中出现的次数

    该题目来源于牛客网《剑指offer》专题。

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

    看到排序数组,要想到用二分查找。

    先找到最前面的数字k,再找到最后面的数字k,通过下标求出次数。

    Go语言实现:

    func getNumberOfK(num []int, k int) int {
      length := len(num)
      firstK := getFirstK(num, k, 0, length-1)
      lastK := getLastK(num, k, 0, length-1)
      if firstK != -1 && lastK != -1 {
        return lastK - firstK + 1
      }
      return 0
    }//递归
    func getFirstK(num []int, k int, start int, end int) int {
      if start > end {
        return -1
      }
      mid := (start + end) / 2
      if num[mid] > k {
        return getFirstK(num, k, start, mid-1)
      } else if num[mid] < k {
        return getFirstK(num, k, mid+1, end)
      } else if mid-1 >= 0 && num[mid-1] == k { //mid为k,mid-1也为k
        return getFirstK(num, k, start, mid-1) //找到最前面的K
      } else {
        return mid
      }
    }//循环
    func getLastK(num []int, k int, start int, end int) int {
      length := len(num)
      mid := (start + end) / 2
      for start <= end {
        if num[mid] > k {
          end = mid - 1
        } else if num[mid] < k {
          start = mid + 1
        } else if mid+1 <= length-1 && num[mid+1] == k { //mid为k,mid+1也为k
          start = mid + 1 //找到最后面的K
        } else {
          return mid
        }
        mid = (start + end) / 2
      }
      return -1
    }
    
  • 相关阅读:
    上下,流动
    面对离去了的亲人,
    计算 star 之间 距离,
    咀嚼,
    python中的内嵌函数
    python中全局变量和局部变量
    python中函数的闭包
    python中函数的收集参数
    python中如何将局部变量扩展为全局变量(global关键字)
    python中的内嵌函数
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12099407.html
Copyright © 2011-2022 走看看