H-Index

作者: 我叫胆小我喜欢小心 | 来源:发表于2017-04-20 09:43 被阅读13次

    题目来源
    计算作者的H指数,有h篇paper的引用不小于h,那么h指数就是h。
    我想着排个序,然后从头往后遍历一下就可以了,代码如下:

    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;
        }
    };
    

    看了下讨论区,有O(N)的解法。感觉挺巧的,h最大的情况就是paper的篇数,一开始从前往后遍历一遍,记录下每种引用的个数,大于len的归为一类。然后再从后往前遍历,可以得到大于h的paper数目,然后就可以进行计算。
    代码如下:

    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;
        }
    };
    

    相关文章

      网友评论

          本文标题:H-Index

          本文链接:https://www.haomeiwen.com/subject/hcvkzttx.html