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

    题目描述

    统计一个数字在排序数组中出现的次数。
    思路:记住二分搜索的复杂度是O(logn),复杂度的计算方式是主定理。二分搜索模板要记得。
    这题要注意没有找到相关元素的返回情况,初始化的时候将两个位置初始化为-1,在最后判断以下,如果两个都是-1就是没有找到位置,这个时候就返回0,如果找到了就pos2 - pos1 + 1.
     
    class Solution {
    public:
        int GetNumberOfK(vector<int> data ,int k) {
            if(data.size() == 0){
                return 0;
            }
            int start = 0,end = data.size() - 1;
            int mid = start + (end - start) / 2;
            int pos1 = -1,pos2 = -1;
            int flag = false;
            while(start + 1 < end){
                mid = start + (end - start) / 2;
                if(data[mid] == k){
                    end = mid;
                }
                else if(data[mid] < k){
                    start = mid;
                }
                else{
                    end = mid;
                }            
            }
            if(data[start] == k){
                pos1 = start;
            }
            else if(data[end] == k){
                pos1 = end;
            }
            start = 0,end = data.size() - 1;
            while(start + 1 < end){
                mid = start + (end - start) / 2;
                if(data[mid] == k){
                    start = mid;
                }
                else if(data[mid] < k){
                    start = mid;
                }
                else{
                    end = mid;
                }            
            }
            if(data[end] == k){
                pos2 = end;
            }
            else if(data[start] == k){
                pos2 = start;
            }
            int cnt = 0;
            if(pos2 != -1 && pos1 != -1){//判断是否找到该元素
                cnt = pos2 - pos1 + 1;
            }            
            return cnt;
        }
    };
  • 相关阅读:
    《算法导论》读书笔记
    【原创】POI操作Excel导入导出工具类ExcelUtil
    10-JMM
    09-字节码执行引擎
    08-类加载机制
    07-前端编译与优化(待补充)
    06-字节码指令
    05-类文件结构
    04-垃圾回收(2)
    03-垃圾回收(1)
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/8195743.html
Copyright © 2011-2022 走看看