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

    题目描述

    统计一个数字在排序数组中出现的次数。
     
     
     
     
    提交链接:点击
     
     
     
     
    思路:
       方法一:遍历一次数据即可,时间复杂度O(n)。
        方法二:由于数组有序,采用二分查找。
     
     
    代码:
    //方法一
    class Solution {
    public:
        int GetNumberOfK(vector<int> data ,int k) {
            int count=0;
            for(int i=0;i<data.size();i++){
                if(k==data[i]){
                    count++;
                }
            }
            return count;
        }
    };
    //方法二
    class Solution {
    public:
        int GetNumberOfK(vector<int> data ,int k) {
            //二分查找 找一个数字的起始位置和终止位置,相减即可
            int low=lower(data,k);
            int high=upper(data,k);
            return high-low+1;
        }
        int lower(vector<int> data, int k){
            int low=0,high=data.size()-1;
            int mid;
            while(low<=high){
                mid=(low+high)/2;
                if(data[mid]<k){
                    low=mid+1;
                }else{
                    high=mid-1;
                }
            }
            return low;
        }
        int upper(vector<int> data, int k){
            int low=0,high=data.size()-1;
            int mid;
            while(low<=high){
                mid=(low+high)/2;
                if(data[mid]<=k){
                    low=mid+1;
                }else{
                    high=mid-1;
                }
            }
            return high;
        }
    };
  • 相关阅读:
    jquery 插件扩展2
    jquery 插件扩展
    call apply bind
    bom object
    js oop 封装
    js oop 继承
    js页面之间传参2
    js弹出新窗口的6中方法
    display Tag
    js中extends方法
  • 原文地址:https://www.cnblogs.com/logo-88/p/9846652.html
Copyright © 2011-2022 走看看