Last updated on October 25th, 2024 at 10:20 pm
Here, We see H-Index II LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
Topics
Binary Search
Companies
Level of Question
Medium
H-Index II LeetCode Solution
Table of Contents
Problem Statement
Given an array of integers citations
where citations[i]
is the number of citations a researcher received for their ith
paper and citations
is sorted in ascending order, return the researcher’s h-index.
According to the definition of h-index on Wikipedia: The h-index is defined as the maximum value of h
such that the given researcher has published at least h
papers that have each been cited at least h
times.
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
1. H-Index II LeetCode Solution C++
class Solution { public: int hIndex(vector<int>& citations) { int n = citations.size(); int min = 0, max = n - 1; int mid; while (min <= max) { mid = (min + max) / 2; if (citations[mid] < n - mid) { min = mid + 1; } else { max = mid - 1; } } return n - min; } };
2. H-Index II Solution Java
class Solution { 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 { hi = med - 1; } } return len - lo; } }
3. H-Index II Solution JavaScript
var hIndex = function(citations) { let start = 0, end = citations.length-1 while(start <= end){ let mid = Math.floor((start+end)/2) if(mid+1 <= citations[citations.length-mid-1]){ start = mid + 1 continue } end=mid-1 } return start };
4. H-Index II Solution Python
class Solution(object): def hIndex(self, citations): n = len(citations) l, r = 0, n-1 while l <= r: mid = (l+r)/2 if citations[mid] >= n-mid: r = mid - 1 else: l = mid + 1 return n-l