public static int hIndex(int[] citations) {
int n = citations.length;
if (citations[n - 1] == 0)
return 0;
int l = 0;
int r = n - 1;
while (l < r)
{ // find the citations[mid] <= n - mid
int mid = l + (r - l) / 2; // mid >= left
if (citations[mid] >= n - mid) // 查找大于标准的最小值
r = mid;
else
l = mid + 1;
}
return n - l;
}
将n-mid理解为二分查找中的target,寻找目标是>=target的最小值。