leetcode 274. H-Index

难度: Medium

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.

Note: If there are several possible values for h, the maximum one is taken as the h-index.


题解:这道题是一个学术水平评价的h-因子算法的设计。h-因子的含义是,一个人的所有论文里至多有h篇文章被引用了至少h次。说起来绕口,实际上是一个非常简单的问题。我们只需要把所有的文章根据被引用次数排序之后,从后往前开始遍历,最后一个元素下标为1,倒数第二个元素下标为2,以此类推。如果这个元素本身的大小要比元素下标要大,那么将我们事先声明好的变量result(之后也是返回这个值)赋值为这个元素的下标。因为我们是从大到小进行遍历,于是我们遍历过的元素都比现在的元素要大,那么久至少有下标个元素大于等于现在的元素,然后我们比较一下下标和元素的大小就可以了。


代码如下:

int hIndex(vector<int>& citations)
    {
        if(citations.size()==0)
        return 0;
        if(citations.size()==1&&citations[0]==0)
        return 0;
        
        sort(citations.begin(),citations.end());
        int result=0;
        int index=0;
        for(int i=citations.size()-1;i>=0;i--)
        {
            if(citations[i]>=index+1)
            {
                result=index+1;
                index+=1;
            }
            
            
        }
        if(index!=0)
        return index;
        else
        return 0;
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值