二分
该题是保证了论文引用次数是升序。
从h指数定义出发,若对于$h_i$满足,则<=$h_i$的都满足,这就是二分的单调性
我们要找到最大的一个$h_i$。
- 满足$h$的条件$c[n - mid] >= mid$
时间复杂度$O(logN)$,空间复杂度$O(1)$
AC代码
class Solution {
public:
int hIndex(vector<int>& c) {
int n = c.size();
int l = 0 ,r = n;
while (l < r) {
int mid = l + r + 1 >> 1;
if (c[n - mid] >= mid) l = mid;
else r = mid - 1;
}
return l;
}
};
emmmm为什么r不等于n-1