二分查找:
注意每次循环边界的选取.
class Solution {
public:
int hIndex(vector<int>& citations) {
int len = citations.size(), left = 0, right = len - 1;
while (left <= right) {
int mid = 0.5 * (left + right);
if (citations[mid] == len - mid) return len - mid ;
else if (citations[mid] > len - mid) right = mid - 1;
else left = mid + 1;
}
return len - left;
}
};