您的位置:首页 > 其它

LeetCode 274. H-Index

2016-06-26 12:06 405 查看
Problem:  https://leetcode.com/problems/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."

For example, given
citations = [3, 0, 6, 1, 5]
, which means the researcher has
5
papers in total and each of them had received
3, 0, 6, 1, 5
citations respectively. Since the researcher has
3
papers with at least
3
citations each and the remaining two with no more than
3
citations each, his h-index is
3
.

Thought:

have an extra space to note bucket[i] papers have i citation, when n, bucket
= times more than n

Reference: https://leetcode.com/discuss/93819/java-bucket-sort-o-n-solution-with-detail-explanation

Code C++:

class Solution {
public:
int hIndex(vector<int>& citations) {
int n = citations.size();
int* bucket = new int[n+1];
for (int i = 0; i <= n; i++){
bucket[i] = 0;
}

for (int i = 0; i < citations.size(); i++) {
if (citations[i] > n) {
bucket
++;
} else {
bucket[citations[i]]++;
}
}

int count = 0;
for (int i = n; n >= 0; i--) {
count += bucket[i];
if (count >= i) {
return i;
}
}
return 0;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: