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."
Example:
Input:citations = [3,0,6,1,5]Output: 3 Explanation:[3,0,6,1,5]means the researcher has5papers in total and each of them had received3, 0, 6, 1, 5citations respectively. Since the researcher has3papers with at least3citations each and the remaining two with no more than3citations each, her h-index is3.
Note: If there are several possible values for h, the maximum one is taken as the h-index.
--------------------------------
class Solution:
def hIndex(self, citations: List[int]) -> int:
citations.sort()
size = len(citations)
# idx [0,size-1]
def f(idx):
nonlocal citations, size
return citations[idx] - (size - idx)
l, r, tgt = 0, size - 1, 0
while (l <= r):
mid = l + ((r - l) >> 1)
fm = f(mid)
if (tgt > fm):
l = mid + 1
else:
r = mid - 1
return size-l

本文介绍了一种计算研究人员h指数的方法。h指数是指一个科学家有h篇论文至少被引用了h次,其余的论文每篇的引用次数不超过h次。通过排序和查找,算法能够有效地确定h指数。
4441

被折叠的 条评论
为什么被折叠?



