leetcode [274]H-Index
Given an array of citations (each citation is a non-negative integer) of a researcher, write a function to compute the researcher's h-index.
According to the definition of h-index on Wikipedia: "A scientist has index h if h of his/her N papers have at least h citations each, and the other N − h papers have no more than h citations each."
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。Example:
Input:citations = [3,0,6,1,5]Output: 3 Explanation:[3,0,6,1,5]means the researcher has5papers in total and each of them had received3, 0, 6, 1, 5citations respectively. Since the researcher has3papers with at least3citations each and the remaining two with no more than3citations each, her h-index is3.
Note: If there are several possible values for h, the maximum one is taken as the h-index.
题目大意:
找到数组中的h-index,保证数组中有h-index个数字大于等于h-index。
解法:
采用桶排序的方法,将大于等于数组长度的数字全都放到一个桶中,其他小于数组长度的数字按数字来放置,记录该数字出现了多少次。使用bucket数组来记录桶排序的结果,然后从后往前遍历bucket数组,找到h-index。
java:
class Solution {
public int hIndex(int[] citations) {
int n=citations.length;
int[] buckets=new int[n+1];
for (int i=0;i<n;i++){
int c=citations[i];
if (c>=n){
buckets[n]+=1;
}else{
buckets[c]+=1;
}
}
int sum=0;
for (int i=n;i>=0;i--){
sum+=buckets[i];
if (sum>=i) return i;
}
return 0;
}
}
更多精彩

