Leetcode 274. H-Index(两种方法)

Leetcode 274. H-Index

题目链接: H-Index

难度:Medium

题目大意:

输入一个数组,找出符合题意要求的数。

思路:

思路1:

先将数组进行排序,然后遍历数组,寻找符合条件的元素。

思路2 :

用数组a统计各个元素出现的次数,大于等于N(输入数组长度)的记在一起,然后对数组a进行遍历,寻找符合条件的元素。

代码

思路1:

class Solution {
    public int hIndex(int[] citations) {
        Arrays.sort(citations);
        int N=citations.length;
        int[] a=new int[N];
        int j=0;
        for(int i=N-1;i>=0;i--){
            a[j++]=citations[i];
        }
        if(N>0&&a[0]==0){
            return 0;
        }//考虑所有元素都为0的特殊情况
        for(int i=0;i<N-1;i++){
            if((a[i]>=i+1)&&(a[i+1]<=i+1)){
                 return i+1;
            }
        }
        return N;
    }
}

思路2:

class Solution {//参考高赞回答
    public int hIndex(int[] citations) {
        Arrays.sort(citations);
        int N=citations.length;
        int[] a=new int[N+1];
        for(int n:citations){
            if(n>=N){
                a[N]++;
            }
            else{
                a[n]++;
            }
        }
        int count=0;
        for(int i=N;i>=0;i--){
            count+=a[i];
            if(count>=i){
                return i;
            }
        }
        return 0;
    }
}

你可能感兴趣的:(Leetcode,leetcode,算法)