首页 > 编程语言 > 详细

剑指Offer - 数字在排序数组中出现的次数

时间:2018-02-13 15:06:19      阅读:163      评论:0      收藏:0      [点我收藏+]

https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&tqId=11190&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

 

题目描述

统计一个数字在排序数组中出现的次数。
 
 
class Solution {
    int findK(vector<int> &data ,int k) {
        int first = 0;
        int last = data.size() - 1;
        
        while (first <= last) {
            int mid = first + (last - first) / 2;
            if (data[mid] == k) return mid;
            else if (data[mid] < k) first = mid + 1;
            else last = mid - 1;
        }
        return -1;
    }
public:
    int GetNumberOfK(vector<int> data ,int k) {
        if (data.size() == 0) return 0;
        int idx = findK(data, k);
        if (idx == -1) return 0;
        int first = idx, last = idx;
        while (first >= 0 && data[first] == data[idx]) first--;
        while (last < data.size() && data[last] == data[idx]) last++;
        return last - first -1;
    }
};

 

剑指Offer - 数字在排序数组中出现的次数

原文:https://www.cnblogs.com/charlesblc/p/8446622.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!