利用好标准库,轻松解决

数字在排序数组中出现的次数

http://www.nowcoder.com/questionTerminal/70610bf967994b22bb1c26f9ae901fa2

利用c++标准库,二分查找,O(logn)复杂度。

class Solution {
public:
    int GetNumberOfK(vector<int> data ,int k) {
        auto l = lower_bound(data.begin(), data.end(), k);
        auto r = upper_bound(data.begin(), data.end(), k);
        return r - l;
    }
};
全部评论
count是顺序查找时间复杂度O(n),lower_bound和upper_bound是针对有序数组,底层是二分查找,时间复杂度O(logn)
1 回复 分享
发布于 2020-04-20 11:32
为什么要用auto不用int
点赞 回复 分享
发布于 2019-10-17 23:16
为啥不直接count(data.begin(),data.end(),k) (手动狗头)
点赞 回复 分享
发布于 2020-04-11 13:08
为什么用int就不对呢
点赞 回复 分享
发布于 2020-12-27 16:20
哼我还有同样快速并且更简洁的呢 auto p=equal_range(data.begin(), data.end(), k); return p.second - p.first;
点赞 回复 分享
发布于 2021-05-09 23:17
算法用库函数就没必要叫算法了
点赞 回复 分享
发布于 2021-08-08 15:28

相关推荐

点赞 评论 收藏
分享
评论
15
收藏
分享
牛客网
牛客企业服务