# 274. H-Index H 指数

## # 题目描述：

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 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, her h-index is 3.
``````

Note: If there are several possible values for h, the maximum one is taken as the h-index.

## # 方法一：排序＋遍历

``````class Solution(object):
def hIndex(self, citations):
"""
:type citations: List[int]
:rtype: int
"""
N = len(citations)
citations.sort()
h = 0
for i, c in enumerate(citations):
h = max(h, min(N - i, c))
return h
``````

### # 方法二：排序+二分

``````class Solution(object):
def hIndex(self, citations):
"""
:type citations: List[int]
:rtype: int
"""
N = len(citations)
citations.sort()
l, r = 0, N - 1
H = 0
while l <= r:
mid = l + (r - l) / 2
H = max(H, min(citations[mid], N - mid))
if citations[mid] < N - mid:
l = mid + 1
else:
r = mid - 1
return H
``````

https://blog.csdn.net/happyaaaaaaaaaaa/article/details/51593843

## # 日期

2018 年 10 月 6 日 —— 努力看书