Back to all solutions
#275 - H-Index II
Problem Description
Given an array of integers citations where citations[i] is the number of citations a researcher received for their ith paper and citations is sorted in ascending order, return the researcher's h-index.
According to the definition of h-index on Wikipedia: The h-index is defined as the maximum value of h such that the given researcher has published at least h papers that have each been cited at least h times.
You must write an algorithm that runs in logarithmic time.
Solution
/**
* @param {number[]} citations
* @return {number}
*/
var hIndex = function(citations) {
let start = 0;
for (let end = citations.length - 1; start <= end;) {
const middle = Math.floor((start + end) / 2);
if (citations.length - middle - 1 < citations[middle]) {
end = middle - 1;
} else {
start = middle + 1;
}
}
return citations.length - start;
};