剑指offer_37变形的二分法

题目描述

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

 

class Solution {
public:
    int GetNumberOfK(vector data ,int k) {
        int first=binaryseachfirst(data,0,data.size()-1,k);
        int last=binaryseachlast(data,0,data.size()-1,k);
        if(first==-1&&last==-1) return 0;
        return last-first+1;
    }
    int binaryseachfirst(vector& data,int l,int r,int key){
        while(l<=r){//等号就带上吧
            int mid=l+((r-l)>>2);
            if(data[mid]>key){
                r=mid-1;
            }else if(data[mid]& data,int l,int r,int key){
        while(l<=r){
            int mid=l+((r-l)>>2);
            if(data[mid]>key){
                r=mid-1;
            }else if(data[mid]

 

你可能感兴趣的:(C++/PAT/洛谷OJ)