题目
https://leetcode-cn.com/problems/h-index/
分析
按引用次数排序
class Solution {
public int hIndex(int[] citations) {
Arrays.sort(citations);
int h = 0, i = citations.length - 1;
while (i >= 0 && citations[i] > h) {
h++;
i--;
}
return h;
}
}
代码
class Solution {
public int hIndex(int[] citations) {
//让我回忆一下计数排序
int len=citations.length;
if(len==0)
return 0;
//h指数不可能大于论文发表数
int[] count=new int[len+1];
for(int i=0;i<len;i++){
if(citations[i]>=len)
count[len]++;
else
count[citations[i]]++;
}
int res=0;
for(int i=len;i>=0;i--){
res+=count[i];
if(res>=i)
return i;
}
return 0;
}
}
复杂度
O(N)
O(N)