275. H Index II - cocoder39/coco39_LC GitHub Wiki
int hIndex(vector<int>& citations) {
int sz = citations.size();
int start = 0, end = sz; //[0, sz)
while (start < end) {
int mid = start + (end - start) / 2;
if (citations[mid] >= sz - mid) {
end = mid;
}
else { //citations[mid] < sz - mid
start = mid + 1;
}
}
return sz - start;
}
if use template below, take care a corner case [0]
, which should return 0.
public int hIndex(int[] citations) {
int len = citations.length;
if (len == 0) {
return 0;
}
int low = 0;
int high = len - 1;
while (high - low > 1) {
int mid = low + (high - low) / 2;
if (citations[mid] <= len - mid) {
low = mid;
} else {
high = mid;
}
}
return Math.max(Math.min(citations[low], len - low), Math.min(citations[high], len - high));
}