【剑指offer】面试题 53:数字在排序数组中出现的次数

来源:互联网 发布:中企动力源码 编辑:程序博客网 时间:2024/06/03 07:30

题目描述

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

时间限制:1秒 空间限制:32768K 热度指数:71223
本题知识点: 数组


算法

假设我们要知道这个数字的次数,那么我们直接搜索 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;    }};




下面这个是直接一行代码实现的,用到了count()函数,我觉得这个如果面试,肯定不会让你过的。


参考代码

class Solution {public:    int GetNumberOfK(vector<int> data ,int k) {        return count(data.begin(), data.end(), k);    }};





阅读全文
0 0