思路:
承接上题【】,与上题不同之处在于已经是排序的,因此通过二分找到临界点即可。
java code:
public class Solution {
public int hIndex(int[] citations) {
if(citations == null || citations.length == 0) return 0;
int len = citations.length;
int lo = 0, hi = len-1;
while(lo <= hi) {
int mid = lo + (hi-lo)/2;
if(citations[mid] == len - mid)
return len-mid;
else if(citations[mid] >= len - mid)
hi = mid - 1;
else
lo = mid + 1;
}
return len-lo;
}
}