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

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

    解法一:顺序遍历 O(n)

    解法二:用二分的思想 找出第一个k 和最后一个k O(logn)

    C++:

     1 class Solution {
     2 public:
     3     int GetNumberOfK(vector<int> data ,int k) {
     4         int first = binarySearch(data , k) ;
     5         int last = binarySearch(data , k+1) ;
     6         if (first == data.size() || data[first] != k)
     7             return 0 ;
     8         else 
     9             return last - first ;
    10     }
    11     
    12     int binarySearch(vector<int> data ,int k) {
    13         int left = 0 ;
    14         int right = data.size() ;
    15         while(left < right){
    16             int mid = left + (right - left) / 2 ;
    17             if (data[mid] >= k){
    18                 right = mid ;
    19             }else{
    20                 left = mid + 1 ;
    21             }
    22         }
    23         return left ;
    24     }
    25 };
  • 相关阅读:
    win10 uwp 模拟网页输入
    PHP prev() 函数
    PHP pos() 函数
    PHP next() 函数
    PHP natsort() 函数
    PHP natcasesort() 函数
    virtualenv
    自古枪兵幸运E
    win10 uwp DataContext
    win10 uwp DataContext
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/9021023.html
Copyright © 2011-2022 走看看