题解 | #数字在升序数组中出现的次数#

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

https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2

轮询

class Solution {
public:
    int GetNumberOfK(vector<int> data ,int k) {
        if (data.empty()) return 0;
        int cnt = 0; 
        for (int i = 0; i < data.size(); ++i) {
            if (k == data[i]) {
                cnt++;
            }
        }
        return cnt;
    }
};

二分

#include <vector>
class Solution {
public:
    int GetNumberOfK(vector<int> data ,int k) {
        if (data.empty()) return 0;
        int cnt = 0; 
        int left_idx = getLeftRange(data, k);
        int right_idx = getRightRange(data, k);
        return right_idx - left_idx + 1;
    }

    int getLeftRange(vector<int>& data, int k) {
        int l = 0;
        int r = data.size() - 1;
        while (l <= r) {
            int mid = l + (r - l) / 2;
            if (data[mid] >= k) {
                r = mid - 1;
            } else if (data[mid] < k) {
                l = mid + 1;
            }
        }
        return l;
    }

    int getRightRange(vector<int>& data, int k) {
        int l = 0;
        int r = data.size() - 1;
        while (l <= r) {
            int mid = l + (r - l) / 2;
            if (data[mid] > k) {
                r = mid - 1;
            } else if (data[mid] <= k) {
                l = mid + 1;
            }
        }
        return r;
    }
};

2023-剑指-搜索算法 文章被收录于专栏

2023-剑指-搜索算法

全部评论

相关推荐

用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
网安已死趁早转行:山东这地方有点说法
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务