274. H-Index

今天的题目是274. H-Index

这道题要求出最大的一个h满足总共有h篇文章引用了至少h次。给定的输入时每一篇文章引用数。

这种问题,一般来说都是先排个序来做加速的。如果现在citations数组是有序的,我们可以从后往前搜索,找到最大的j使得倒数第j个元素的引用数(citations[j])大于等于j。因此,代码如下:

1
2
3
4
5
6
int hIndex(vector<int>& citations) {
sort(citations.begin(), citations.end());
int i, j;
for(i = citations.size() - 1, j = 1;i >= 0 && citations[i] >= j;i--,j++);
return j - 1;
}