https://leetcode.com/problems/h-index/
Given an array of citations (each citation is a non-negative integer) of a researcher, write a function to compute the researcher’s h-index.
According to the definition of h-index on Wikipedia: “A scientist has index h if h of his/her N papers have at least h citations each, and the other N − h papers have no more than h citations each.”
For example, given citations = [3, 0, 6, 1, 5]
, which means the researcher has 5
papers in total and each of them had received 3, 0, 6, 1, 5
citations respectively. Since the researcher has 3
papers with at least 3
citations each and the remaining two with no more than 3
citations each, his h-index is 3
.
Solution. This problem is a pretty easy one. 1st we sort the citation array in ascending order. Then we iterate from left to right in citation array, find the first position where its value is greater than the length between the position and array length.
Let’s think about below function. For point pi, its height is hi, the length from pi to right boundary is li. Basically, we need to find the first pi where hi is greater than li.
check my code on github: link