用 JavaScript 计算引文中的 h 指数


假设我们有一个正整数数组,表示一位研究员在一段时间内开展的引文数量。

我们需要编写一个 JavaScript 函数,该函数接收一个这样的数组,函数应根据数组中表示的引文数据找到该研究员的 h 指数。

H 指数

考虑一位研究员在其职业生涯中进行了 N 次引文。然后,如果研究员 N 篇论文中有 h 篇论文至少有 h 次引文,而另外 N − h 篇论文最多有 h 次引文,那么研究员的 h 指数为 h。

例如 −

如果引文数组为 −

const arr = [1, 6, 3, 0, 5];

此数据表示研究员总共有 5 篇论文,分别收到 1、6、3、0、5 次引文。

由于研究员有 3 篇论文至少有 3 次引文,其余两篇论文最多有 3 次引文,因此 h 指数为 3。

因此,此数组的输出应为 −

const output = 3;

示例

以下是代码 −

const arr = [1, 6, 3, 0, 5];
const findHIndex = (arr = []) => {
   let possible = [];
   let { length: len } = arr;
   if (len === 0){
      return 0;
   };
   possible.length = len + 2;
   possible = possible.join('-').split('').map(() => 0);
   for (let i = 0; i < len; i ++) {
      let val = arr[i];
      let ind = val > len ? len : val;
      possible[ind] += 1;
   }
   let result = 0;
   for (let k = len; k >= 0; k --) {
      result += possible[k];
      if (result >= k) {
         return k;
      }
   }
};
console.log(findHIndex(arr));

输出

以下是控制台输出 −

3

更新于: 18-1-2021

313 次浏览

开启您的 职业生涯

完成课程即可获得认证

开始
广告