**Physical Address**

304 North Cardinal St.

Dorchester Center, MA 02124

Given an array of integers `citations`

where `citations[i]`

is the number of citations a researcher received for their `i`

paper and ^{th}`citations`

is sorted in an **ascending order**, 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**.

You must write an algorithm that runs in logarithmic time.

**Example 1:**

**Input:** citations = [0,1,3,5,6]
**Output:** 3
**Explanation:** [0,1,3,5,6] means the researcher has 5 papers in total and each of them had received 0, 1, 3, 5, 6 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,2,100]
**Output:** 2

**Constraints:**

`n == citations.length`

`1 <= n <= 10`

^{5}`0 <= citations[i] <= 1000`

`citations`

is sorted in**ascending order**.

```
public int hIndex(int[] citations) {
int len = citations.length;
int lo = 0, hi = len - 1;
while (lo <= hi) {
int med = (hi + lo) / 2;
if (citations[med] == len - med) {
return len - med;
} else if (citations[med] < len - med) {
lo = med + 1;
} else {
//(citations[med] > len-med), med qualified as a hIndex,
// but we have to continue to search for a higher one.
hi = med - 1;
}
}
return len - lo;
}
```

```
int hIndex(vector<int>& c) {
int n = c.size();
if(!n) return 0;
for(int i=0;i<n;i++){
if(c[i] >= n-i) return n-i; // The first element whose value is more than the length of remaining array.
//So we return the remaining length which is the answer.
// eg [0,1,3,4,6] c[2] = 3 >2(length of remaing array) so n-i = length of remaining array + that element
}
return 0;
}
```

```
class Solution:
def hIndex(self, citations):
if not citations: return 0
n = len(citations)
beg, end = 0, n - 1
while beg <= end:
mid = (beg + end)//2
if mid + citations[mid] >= n:
end = mid - 1
else:
beg = mid + 1
return n - beg
```

In our experience, we suggest you solve this H-Index II LeetCode Solution and gain some new skills from Professionals completely free and we assure you will be worth it.

If you are stuck anywhere between any coding problem, just visit Queslers to get the H-Index II LeetCode Solution

I hope this H-Index II LeetCode Solution would be useful for you to learn something new from this problem. If it helped you then don’t forget to bookmark our site for more Coding Solutions.

This Problem is intended for audiences of all experiences who are interested in learning about Data Science in a business context; there are no prerequisites.

Keep Learning!

**More Coding Solutions >>**