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

    题目描述

    统计一个数字在排序数组中出现的次数。
     
    class Solution {
    public:
        int GetNumberOfK(vector<int> data ,int k) {
            int n=data.size();
            int cnt=0;
            for(int i=0;i<n;i++) {
                if(data[i]==k) cnt++;
            }
            return cnt;
        }
    };
    

      

    //虽然有违出题人的本意,但是。。。
    class Solution {
    public:
        int GetNumberOfK(vector<int> data ,int k) {
          //单纯的利用了count函数。。。。。
            return count(data.begin(),data.end(),k);
        }
    };
    

      

    //因为data中都是整数,所以可以稍微变一下,不是搜索k的两个位置,而是搜索k-0.5和k+0.5
    //这两个数应该插入的位置,然后相减即可。
    class Solution {
    public:
        int GetNumberOfK(vector<int> data ,int k) {
            return biSearch(data, k+0.5) - biSearch(data, k-0.5) ;
        }
    private:
        int biSearch(const vector<int> & data, double num){
            int s = 0, e = data.size()-1;      
            while(s <= e){
                int mid = (e - s)/2 + s;
                if(data[mid] < num)
                    s = mid + 1;
                else if(data[mid] > num)
                    e = mid - 1;
            }
            return s;
        }
    };
    

      

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    将本地sql文件导入到mysql中
    eclipse注释乱码问题
    导入import com.sun.image.codec.jpeg.JPEGCodec出错
    cmd启动和停止tomcat
    Tomcat修改端口
    ==和equals
    多态
    关键字——this,super,static,final
    方法重载、方法重写、四种权限修饰、JavaBean、代码块
    异常
  • 原文地址:https://www.cnblogs.com/dd2hm/p/7376298.html
Copyright © 2011-2022 走看看