打卡面试经典150题
1.题目概述
本题稍微有点绕,主要是题目的定语从句翻译的很莫名其妙。实际上,就是
至少有h篇论文,每一篇至少被引用次数为h,听起来很绕,但是以用例3 0 6 1 5来分析,其实说人话,h指数无非就是5或4或3或2或1或0,那么如果最小引用次数都大于等于5,那么其他的不用看了,h就是取最大值5,如果最小值不满足,那么倒数第二小值如果大于等于4,那么一定有4个是大于等于4的,这就是h指数
作者:carpe_diem 链接:leetcode.cn/problems/h-… 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2.分析过程
以用例为例,size是5, 排序过后是0 1 3 5 6, h指数的取值范围一定是0~5, 那么:
- 如果 最小值 0 都大于等于5,那么h指数一定是最大值5
- 如果 倒数第二小值 1 都大于等于4,那么h指数一定是4
- 如果 倒数第三小值 3 都大于等于3,那么h指数一定是3
- 如果 倒数第四小值 5 都大于等于2,那么h指数一定是2
- 如果 倒数第五小值 6 都大于等于1,那么h指数一定是1
- 都不满足时,h指数一定是最小值0
3.边界条件
无
4.code
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;
}