274. H-Index
问题描述:
Given an array of citations (each citation is a non-negative integer) of a researcher, write a function to compute the researcher's h-index.
According to the definition of h-index on Wikipedia: "A scientist has index h if h of his/her N papers have at least h citations each, and the other N − h papers have no more than h citations each."
Example:
Input:citations = [3,0,6,1,5]Output: 3 Explanation:[3,0,6,1,5]means the researcher has5papers in total and each of them had received3, 0, 6, 1, 5citations respectively. Since the researcher has3papers with at least3citations each and the remaining two with no more than3citations each, her h-index is3.
Note: If there are several possible values for h, the maximum one is taken as the h-index.
解题思路:
首先要明白h-index的定义:
N篇论文中, 有h篇论文的引用至少为h;剩下的(N-h)篇论文的引用最多为h
我们不妨先给引用数组从高到低排序
然后从头开始遍历并且更新ret。
当ret>=当前值且<=下一个值的时候,就可以返回ret。
注意特例!!
当全为0的时候,需要返回0
代码:
class Solution { public: int hIndex(vector<int>& citations) { sort(citations.begin(), citations.end(), greater<int>()); if(citations.size() == 0 || citations[0] == 0) return 0; int ret = 0; int n = citations.size(); for(int i = 0; i < n; i++){ ret++; if(citations[i] >= ret && i + 1 < n && citations[i+1] <= ret) return ret; } return ret; } };

浙公网安备 33010602011771号