题目
给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。
h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)至多有
h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数不多于 h 次。)”
示例:输入: citations = [3,0,6,1,5]
输出: 3
解释: 给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。
由于研究者有 3 篇论文每篇至少被引用了 3 次,其余两篇论文每篇被引用不多于 3 次,所以她的 h 指数是 3。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/h-index
解题思路
先对数组排序,努力的读懂题目,其实len-i和citations[i]中小的一个就是高引用次数,而且很容易看出len-i一直在递减,citations[i]排序后一直在递增,所以找到最大的一个h即len-i小于等于citations[i]的第一个。
代码如下
class Solution {
public int hIndex(int[] citations) {
Arrays.sort(citations);
int len = citations.length;
for (int i = 0; i < len; i++) {
int count = len - i;
if (count <= citations[i])
return count;
}
return 0;
}
}