LeetCode274. H 指数

题目链接:

274. H 指数 - 力扣(LeetCode)

思路分析:这个题目可以使用哈希表来以空间换时间,我们设置一个数组v来统计每一个对应的影响因子的文章出现的数量,遍历一遍后,v[i]表示影响因子为i的文章的数量,为了满足h的定义,低影响因子的文章数量需要加上所有比其影响因子高的文章的数量,所以进行一轮从后向前的求和,计算完毕后,从后向前第一个满足条件的i就是对应的h。

算法分析:这里主要是用到了哈希表,以空间换时间,属于比较常考的一类问题,希望大家可以掌握。

参考代码:

class Solution {
public:
    int hIndex(vector<int>& citations) {
        vector<int>v(1001,0);//开辟一个数组,存储影响因子为i的文章的数量
        int n=citations.size();
        for(int i=0;i<n;++i){//遍历所有的论文
            v[citations[i]]++;//将影响因子为i的论文增加到对应的位置
        }
        for(int i=1000;i>0;--i)//题目给出了h的区间,所以从最大值开始向前遍历
            v[i-1]+=v[i];//低影响因子的文章需要累计上高影响因子的
        for(int i=1000;i>=0;--i){//从大到小寻找合适的结果
            if(v[i]>=i)//如果影响因子为i的文章数量大于i则满足条件返回答案
                return i;
        }
        return 0;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值