Java解决H指数
01 题目
-
给你一个整数数组
citations
,其中citations[i]
表示研究者的第i
篇论文被引用的次数。计算并返回该研究者的h
指数。根据维基百科上 h 指数的定义:
h
代表“高引用次数” ,一名科研人员的h
指数 是指他(她)至少发表了h
篇论文,并且 至少 有h
篇论文被引用次数大于等于h
。如果h
有多种可能的值,h
指数 是其中最大的那个。示例 1:
输入:citations = [3,0,6,1,5] 输出:3 解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。 由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。
示例 2:
输入:citations = [1,3,1] 输出:1
提示:
n == citations.length
1 <= n <= 5000
0 <= citations[i] <= 1000
02 知识点
-
排序
-
循环
03 我的题解思路
public class hIndex {
public static void main(String[] args) {
// 测试数据
int[] citations = {3,0,6,1,5};
System.out.println(hIndex(citations));
}
public static int hIndex(int[] citations) {
int n=citations.length;//数组长度
Arrays.sort(citations);//排序后得到一个从小到大的数组
for (int i = citations[n-1]; i >0; i--) {//最多循环数组中最大值的次数
// i代表引用次数
int count=0;//计算大于这个引用数的论文数
for (int j = n-1; j >=0; j--) {
if(citations[j]<i) {//当引用次数小于当前标准i时,循环结束
break;
}else {//否则,论文数增加
count++;
}
}
if(count>=i) {
// 首次论文数大于引用数,退出循环
return i;
}
}
return 0;
}
}