# 274 -「java」排序法 解决『H指数』的详细思路与解法
Tags:
- 中等
- 数组
- java
题目链接:
解题思路:
- 题目要求h个元素值要求大于某个值, 其余的元素值小于某个值, 则很自然想到需要先将原数组排序;
- 遍历排序后的数组, 要达到至少有N篇论文的引用次数>=N的要求, 可以简化为模型:
对于当前角标i, citations[i]<=citations.length -i-1, 同时citations[i+1] >= citations.length -i-1, 则citations.length -i-1即为满足条件的N;
提交代码:
class Solution {
public int hIndex(int[] citations) {
//排序
int len = citations.length;
Arrays.sort(citations);
if(citations[0] >= len){ //边界判断
return len;
}
for(int i = 0; i<len-1; i++){
int t = len -i-1; //至少有多少篇
if(citations[i]<= t && citations[i+1] >= t){ //当前论文引用次数至多为t篇; 下一篇论文引用次数至少为t篇
return t;
}
}
return 0;
}
}
提交记录[20210711]:
执行用时:1 ms, 在所有 Java 提交中击败了88.01%的用户
内存消耗:36 MB, 在所有 Java 提交中击败了95.17%的用户

浙公网安备 33010602011771号