JZ37 劍指offer 數字在升序陣列中出現的次數
阿新 • • 發佈:2021-01-20
技術標籤:劍指
第37題 數字在升序陣列中出現的次數
題目描述
統計一個數字在升序陣列中出現的次數。
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int lb = 0, rb = 0;
int l = 0, r = data.size();
while(l<r){
int mid = l + (r-l)/2;
if(data[mid]< k) l=mid+1;
else r = mid;
}
lb = l;
l = 0, r = data.size();
while(l<r){
int mid = l + (r-l)/2;
if(data[mid]<=k) l=mid+1;
else r = mid;
}
rb = l;
return rb-lb;
}
};
思路:
利用二分查找出該數的左右邊界,找左邊界時候,如果mid值小於k,左指標移到mid+1處,如果mid值大於等於k,右指標移到mid處。