题目要求:
给你一个整数数组
citations
,其中citations[i]
表示研究者的第i
篇论文被引用的次数。计算并返回该研究者的h
指数。根据维基百科上 h 指数的定义:
h
代表“高引用次数” ,一名科研人员的h
指数 是指他(她)至少发表了h
篇论文,并且 至少 有h
篇论文被引用次数大于等于h
。如果h
有多种可能的值,h
指数 是其中最大的那个。
题目分析:
题目分析 1.h最大长度为数组长度(0<=h<=arr.length) 2.最少有h个元素大于h,且剩余元素数量小于h 3.先进行数组的排序,从大到小进行
代码实现:
public static void main(String[] args) {
/*
* 题目分析 1.h最大长度为数组长度(0<=h<=arr.length)
* 2.最少有h个元素大于h,且剩余元素数量小于h
* 3.先进行数组的排序,从大到小进行
* */
int[] arr = {3,0,6,1,5};
int length = arr.length;
for (int i = 0; i < length; i++) {
for (int j = 0; j < length-1-i; j++) {
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
// for (int i = 0; i < arr.length; i++) {
// System.out.print(arr[i]+" ");
//
// }
System.out.println("\n");
//存放符合条件的所有结果
List<Integer> results = new ArrayList<>();
for (int i = 0; i < length; i++) {
if((length-i>=arr[i])&&(i<=length-arr[i])){
results.add(arr[i]);
//System.out.println("h的最大值为"+arr[i]);
}
}
int max = results.get(0);
for(int result:results ){
if(result>max){
max = result;
}
}
System.out.println("最大h值为"+max);
}
运行结果:
标签:arr,题目,指数,int,System,力扣,length,274,out From: https://blog.csdn.net/m0_72186118/article/details/142443179