题目描述:
给你一个整数数组
citations
,其中citations[i]
表示研究者的第i
篇论文被引用的次数。计算并返回该研究者的h
指数。根据维基百科上 h 指数的定义:
h
代表“高引用次数” ,一名科研人员的h
指数 是指他(她)至少发表了h
篇论文,并且每篇论文 至少 被引用h
次。如果h
有多种可能的值,h
指数 是其中最大的那个。
解题思路:
先对数组排序,从小到大,最好的情况就是总共x篇文章,然后每篇都被引用了x遍,所以从最大的从前往后查,只要有一个不符合要求,就让x减1,一旦找到符合要求的,后面的就都符合要求了
解法一:排序
function hIndex(citations) {
citations.sort((a, b) => a - b);
let length = citations.length;
let maxh = 0;
for (let i = 0; i < citations.length; i++) {
// 只要当前引用次数小于论文篇数,就立刻减去这篇文章
if (citations[i] < length) {
length--;
} else {
// 找到符合要求的之后,后面的都不用看了,直接返回最大的篇数
maxh = citations.length - i;
break;
}
}
return maxh;
};
用时:
// Your runtime beats 90.1 % of typescript submissions
// Your memory usage beats 19.8 % of typescript submissions (43.8 MB)