# 274 -「java」排序法 解决『H指数』的详细思路与解法

Tags:

  • 中等
  • 数组
  • java

题目链接:

274. H 指数

解题思路:

  1. 题目要求h个元素值要求大于某个值, 其余的元素值小于某个值, 则很自然想到需要先将原数组排序;
  2. 遍历排序后的数组, 要达到至少有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%的用户
posted @ 2023-03-23 18:11  zhiyuanZAG  阅读(43)  评论(0)    收藏  举报