码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-02-13 15:42:11      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:tps   ber   turn   scribe   blog   数字   个数   describe   nbsp   

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 - 数字在排序数组中出现的次数

标签:tps   ber   turn   scribe   blog   数字   个数   describe   nbsp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!