文档章节

LeetCode:H-Index、H-Index II - H指数

北风其凉
 北风其凉
发布于 2015/09/10 23:33
字数 696
阅读 4.1K
收藏 3

1、题目名称

H-Index(H指数)

2、题目地址

https://leetcode.com/problems/h-index/

3、题目内容

英文: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.

中文:给出一个数组记录一个研究者各篇文章的引用数,写一个函数计算这个研究者的H指数

4、解题方法

H指数是一个2005年由Jorge E. Hirsch提出的用于评估研究人员的学术产出数量与学术产出水平的指标。更详细的信息可以参考h-index的维基百科页面。实现H指数的计算方法可以从它的定义入手,即一个人在其所有学术文章中有N篇论文分别被引用了至少N次,他的H指数就是N。

一段实现此方法的Java代码如下:

/**
 * 功能说明:LeetCode 275 - H-Index
 * 开发人员:Tsybius2014
 * 开发时间:2015年9月10日
 */
public class Solution {
    
    /**
     * 求文献引用的H指数
     * @param citations 引用次数
     * @return H指数
     */
    public int hIndex(int[] citations) {
        
        if (citations.length == 0) {
            return 0;
        }

        //数组元素降序排列
        int temp;
        for (int i = 0; i < citations.length; i++) {
            for (int j = i + 1; j < citations.length; j++) {
                if (citations[i] < citations[j]) {
                    temp = citations[i];
                    citations[i] = citations[j];
                    citations[j] = temp;
                }
            }
        }
        
        //计算H指数
        int result = 0;
        for (Integer cites : citations) {
            if (result >= cites) {
                return result;
            }
            result++;
        }
        
        return result;
    }
}

使用Arrays.sort函数进行排序可以加快计算速度,不过Arrays.sort排序后是升序,所以要用反方向遍历数组:

import java.util.Arrays;

/**
 * 功能说明:LeetCode 275 - H-Index
 * 开发人员:Tsybius2014
 * 开发时间:2015年9月10日
 */
public class Solution {
    
    /**
     * 求文献引用的H指数
     * @param citations 引用次数
     * @return H指数
     */
    public int hIndex(int[] citations) {
        
        if (citations.length == 0) {
            return 0;
        }

        //数组元素降序排列
        Arrays.sort(citations);
        
        //计算H指数
        int result = 0;
        for (int i = citations.length - 1; i >= 0; i--) {
            if (result >= citations[i]) {
                return result;
            }
            result++;
        }
        
        return result;
    }
}

如果数组很长,在排序完毕后也可以试着采用二分查找法计算H指数。

4、275题解题方法

第275题名称:H-Index II(H指数-2)

第275题地址:https://leetcode.com/problems/h-index-ii/

第275题的内容与第274题基本一致,只是多提供了一个条件:传入的数组是升序排列的。这道题仍然可以使用上面的方法计算H指数,不过可以省略对数组进行手工排序的步骤。

import java.util.Arrays;

/**
 * 功能说明:LeetCode 275 - H-Index
 * 开发人员:Tsybius2014
 * 开发时间:2015年9月10日
 */
public class Solution {
    
    /**
     * 求文献引用的H指数
     * @param citations 引用次数
     * @return H指数
     */
    public int hIndex(int[] citations) {
        
        if (citations.length == 0) {
            return 0;
        }

        //计算H指数
        int result = 0;
        for (int i = citations.length - 1; i >= 0; i--) {
            if (result >= citations[i]) {
                return result;
            }
            result++;
        }
        
        return result;
    }
}

END

© 著作权归作者所有

北风其凉

北风其凉

粉丝 123
博文 497
码字总数 462305
作品 4
朝阳
程序员
私信 提问
加载中

评论(0)

274. H-Index - LeetCode

Question 274. H-Index Solution 题目大意: 论文里的 h 因子判定,题目的意思可能有点晦涩。h 因子是评判学术成就的一种重要方法,h 因子越高越好,h 因子兼顾研究学术人员的学术产出数量与...

yysue
2018/07/20
66
0
2018谷歌学术影响力排名出炉:CVPR进入前20,ResNet被引最多过万次!

【新智元导读】谷歌学术昨天发表了2018年最新的学术期刊和会议影响力排名,CVPR和NIPS分别排名第20和第54。在排名第一的Nature里,过去5年被引用次数最高的论文,正是深度学习三大神Hinton、...

技术小能手
2018/08/06
0
0
2018全球Top 1000 计算机科学家h指数发布,中国29名学者上榜!

Guide2Research最新公布了2018年计算机科学与电子领域顶级科学家排名。排名基于 Google Scholar 和 DBLP 提供的 H-index 指标。H-index(被引次数高于或等于h的论文的数量)是衡量科学家产出...

技术小能手
2018/06/27
0
0
HashMap和HashTable的区别

1、 继承和实现区别   Hashtable是基于陈旧的Dictionary类,完成了Map接口;HashMap是Java 1.2引进的Map接口的一个实现(HashMap继承于AbstractMap,AbstractMap完成了Map接口)。   2、 ...

飓风2000
2014/05/21
2K
1
LeetCode 分类刷题 —— Sort

Sort 的 Tips: 深刻的理解多路快排。第 75 题。 链表的排序,插入排序(第 147 题)和归并排序(第 148 题) 桶排序和基数排序。第 164 题。 "摆动排序"。第 324 题。 两两不相邻的排序。第 767 ...

一缕殇流化隐半边冰霜
2019/07/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

维护UP主权益 B站宣布AV号将全面升级为BV号

今日(3月23日),B站官方公开了一则有关于“AV号全面升级”的相关公告。官方表示:为了保护信息安全,容纳更多投稿,维护UP主的权益,自2020年3月23日起,AV号将全面升级为BV号,未来BV号将...

osc_6n4iy0i5
9分钟前
24
0
TikTok为施瓦辛格校园慈善机构捐赠300万美元

据外媒报道,社交媒体公司TikTok日前表示,将向美加州前州长、好莱坞演员阿诺德·施瓦辛格创办的After-School All-Stars(以下简称ASAS)慈善机构捐赠300万美元,以此来帮助那些因新冠病毒爆...

osc_iqngllfn
11分钟前
21
0
暴风集团收问询函:按照规则要求披露2019年业绩情况

2月10日下午消息,暴风集团收问询函,深交所要求公司说明未在规定时间内披露业绩预告的原因,目前的进展情况及解决措施。同时,请公司尽快按照规则要求披露2019年业绩情况。 以下为问询函全文...

osc_zyjrm8ih
12分钟前
22
0
爱奇艺2019年亏损103亿 CEO龚宇:会员费太低 要涨价

日前国内知名视频平台爱奇艺发布了2019年Q4及全年财报,去年一年营收290亿元,净亏损103亿元。面对这样的情况,CEO龚宇在财报会议中表示2020年将提高会员价格。从2017年到2019年,爱奇艺一直...

osc_j9ayg4mu
14分钟前
25
0
Microsoft Edge for Mac(edge浏览器) 83.0.477.0中文版

microsoftedge浏览器是一款作为windows操作系统的官方内置浏览器。microsoftedge浏览器对比ie浏览器来说功能更好,而且它还集成Contana等新功能,交互界面更加简洁,还增加了对Firefox浏览器...

云不若
15分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部