假设我们有一个正整数数组,它们代表特定研究人员在一段时间内进行的引用次数。
我们需要编写一个接受一个这样的数组的JavaScript函数,并且该函数应该根据该数组表示的引文数据找到该研究人员的h-index。
考虑一位在其职业生涯中被引用过N次的研究人员。然后,如果他/她的N篇论文中的h篇至少被h引用,而其他N - h篇论文每篇不被h引用,则研究者具有索引h。
例如-
如果citations数组是-
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