題目來源
計(jì)算作者的H指數(shù)驳概,有h篇paper的引用不小于h,那么h指數(shù)就是h旅薄。
我想著排個(gè)序辅髓,然后從頭往后遍歷一下就可以了,代碼如下:
class Solution {
public:
int hIndex(vector<int>& citations) {
int n = citations.size();
vector<int> tmp(citations);
sort(tmp.begin(), tmp.end());
for (int i=0; i<n; i++)
if (tmp[i] >= n-i)
return n-i;
return 0;
}
};
看了下討論區(qū)少梁,有O(N)的解法洛口。感覺挺巧的,h最大的情況就是paper的篇數(shù)凯沪,一開始從前往后遍歷一遍绍弟,記錄下每種引用的個(gè)數(shù),大于len的歸為一類著洼。然后再從后往前遍歷,可以得到大于h的paper數(shù)目而叼,然后就可以進(jìn)行計(jì)算身笤。
代碼如下:
class Solution {
public:
int hIndex(vector<int>& citations) {
int n = citations.size();
vector<int> nums(n+1, 0);
for (int i=0; i<n; i++)
if (citations[i] > n)
nums[n]++;
else
nums[citations[i]]++;
int sum = 0;
for (int i=n; i>=0; i--) {
sum += nums[i];
if (sum >= i)
return i;
}
return 0;
}
};