用 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 次瀏覽

開啟您的 職業生涯

完成課程即可獲得認證

開始
廣告
© . All rights reserved.