Problem: 274. H 指数
思路
定义数组长度为 $n$。
- 将数组从大到小排序。
- 取数组第一个数字 $m=citations[0]$,$h = Min(m,n)$,$h$ 即最大可能的 $h$ 指数,因为 h 指数最大不可能超过论文数量。
判断 $citations[h-1]$ 是否大于等于 $h$,这里就分两种情况:
- 当 $citations[h-1] >= h$ 时,因为数组是从大到小排列的,所以下标为 $0 ~ h-1$ 这 $h$ 个数一定都大于 $h$,此时 $h$ 为返回的结果。
- 当 $citations[h-1] < h$ 时,说明当前 $h$ 不满足 $h$ 指数的定义( $h$ 个被引用 $h$ 次的论文),此时将 $h = h-1$,再次执行第 3 步,直到能返回结果。
需要考虑边界情况:当排序之后最大的那个数字等于 $0$ 时,直接返回 0
Code
/**
* @param {number[]} citations
* @return {number}
*/
var hIndex = function (citations) {
citations.sort((a, b) => b - a);
let maxHIndex = Math.min(citations[0], citations.length);
if (maxHIndex === 0) {
return 0;
}
while (true) {
if (citations[maxHIndex - 1] >= maxHIndex) {
return maxHIndex;
}
maxHIndex--;
}
};
本文由 suxi 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: 2024/03/26 20:40