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

来源:互联网 发布:iqunix 知乎 编辑:程序博客网 时间:2024/06/05 02:17

题目描述

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

解析:有序,二分查找,找到k所在位置,在该位置前后再找等于k的数,用count记录个数

class Solution {public:    int GetNumberOfK(vector<int> data ,int k) {        if(data.size()<=0) return 0;//数组为空        int i=0,j=data.size()-1,count=0,mid;        while(i<=j){            mid=(i+j)/2;            if(data[mid]<k) i=mid+1;            else if(data[mid]>k) j=mid-1;            else{                count++;                int p=mid-1,q=mid+1;                while(data[p]==k){count++;p--;}                while(data[q]==k){count++;q++;}                return count;            }        }        return 0;;    }};


阅读全文
0 0
原创粉丝点击