1.今天这个题做出来了
class Solution {
public int hIndex(int[] citations) {
int max=0;
Arrays.sort(citations);
for(int i=0;i<citations.length;i++){
if(citations[i] >= citations.length-i && citations.length-i>max)
max=citations.length-i;
}
return max;
}
}
首先,我觉得这个题挺绕脑子的,就是理解这个
” h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。“
我第一眼看见,这啥玩意,所以我就跟着测试用例走了一遍,走一遍就知道这个h啥意思了
我用了三组例子,分别是
1. 0 1 2 5 6
2. 0 1 3 5 6
3. 0 4 7 18
当然,这个都是排序过后的,排序过后,从这个位置i到数组末尾,有几篇文章被引用几次,就可以用length-i计算,
我这前两个例子在i=2这个位置,此时length-i =3,
如果nums[i]==length-i 此时,这个i位置的就可以得到一个h值(要理解满足h的情况有很多,取最大h值),h=length-i
如果nums[i]<length-i,这说明这个位置你得不到一个满足条件的h,如第一组例子,你有3篇引用2次以上的,
如果nums[i]>length-i,此时这个位置的i得到的h就是length-i
2.改良
class Solution {
public int hIndex(int[] citations) {
Arrays.sort(citations);
for(int i=0;i<citations.length;i++){
if(citations[i] >= citations.length-i)
return citations.length-i;
}
return 0;
}
}
感觉自己也是有点憨憨,是用citations.length-i这个确定最大值,i越来越大,后边的怎么可能大过第一次满足条件的h
直接return就OK了,不用max