# H-Index LeetCode Solution | Easy Approach Share:

H-Index Given an array of integers `citations` where `citations[i]` is the number of citations a researcher received for their `ith` paper, return compute the researcher’s `h`-index.

According to the definition of h-index on Wikipedia: A scientist has an index `h` if `h` of their `n` papers have at least `h` citations each, and the other `n − h` papers have no more than `h` citations each.

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

Example 1:

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

Example 2:

```Input: citations = [1,3,1]
Output: 1
```

Constraints:

• `n == citations.length`
• `1 <= n <= 5000`
• `0 <= citations[i] <= 1000`

Time: O(n)
Space: O(n)

### C++

``````class Solution {
public:
int hIndex(vector<int>& citations) {
const int n = citations.size();
int accumulate = 0;
vector<int> count(n + 1);

for (const int citation : citations)
++count[min(citation, n)];

// to find the largeset h-index, loop from back to front
// i is the candidate h-index
for (int i = n; i >= 0; --i) {
accumulate += count[i];
if (accumulate >= i)
return i;
}

throw;
}
};
``````

### Java

`````` class Solution {
public int hIndex(int[] citations) {
final int n = citations.length;
int accumulate = 0;
int[] count = new int[n + 1];

for (final int citation : citations)
++count[Math.min(citation, n)];

// to find the largeset h-index, loop from back to front
// i is the candidate h-index
for (int i = n; i >= 0; --i) {
accumulate += count[i];
if (accumulate >= i)
return i;
}

throw new IllegalArgumentException();
}
}

``````

### Python

`````` class Solution:
def hIndex(self, citations: List[int]) -> int:
n = len(citations)
accumulate = 0
count =  * (n + 1)

for citation in citations:
count[min(citation, n)] += 1

# to find the largeset h-index, loop from back to front
# i is the candidate h-index
for i, c in reversed(list(enumerate(count))):
accumulate += c
if accumulate >= i:
return i

``````

#### Watch Tutorial

Checkout more Solutions here