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;
        }
    };
  • 相关阅读:
    C# 上传辅助方法
    C# 经纬度计算
    C#Excel导出反射数据集
    C# 数据模板导出
    C# 百度经纬度获取地址信息
    【平台开发】— 5.后端:代码分层
    【平台开发】— 4.mysql建库建表
    【平台开发】— 3.前端开发思路
    【平台开发】— 2.前端:vue-element-admin
    【平台开发】— 1.开篇
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/8195743.html
Copyright © 2011-2022 走看看