二分查找 -- lower_bound 与 upper_bound

题目:

  判断数字x在有序数组出现的次数

  

 1 class Solution {
 2 public:
 3     int GetNumberOfK(vector<int> data ,int k) {
 4         if(!data.size()) return 0;
 5         cout << upper_bound(data, k) << endl;
 6         return upper_bound(data, k) - lower_bound(data, k);
 7     }
 8     int lower_bound(vector<int> data ,int k) {
 9         int l=0, r=data.size();
10         while(l<r){
11             int mid = (l+r)/2;
12             if(data[mid]<k)
13                 l = mid +1;
14             else
15                 r = mid;
16         }
17         return l;
18     }
19    int upper_bound(vector<int> data ,int k) {
20        int l=0, r=data.size();
21         while(l<r){
22             int mid = (l+r)/2;
23             if(data[mid]<=k)
24                 l = mid + 1;
25             else
26                 r = mid;
27         }
28         return l;
29    }
30 };
抓住青春的尾巴。。。
原文地址:https://www.cnblogs.com/xidian-mao/p/14831861.html