H-Index - Medium - L

less than 1 minute read

Published:

Question

  • https://leetcode.com/problems/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.

Approach

  • Binary Search
  • Simple Sum

Solution

class Solution {
public:
    int hIndex(vector<int>& citations) {
        int x = citations.size();
        int s[x + 1];
        for (int i = 0 ; i <=x ; i++) s[i] = 0;
        for (int i = 0; i < x; i++) s[min(x, citations[i])]++;

        int sum = 0;
        for (int i = x; i >= 0; i--)
        {
            sum += s[i];
            if (sum >= i)
                return i;
        }
        return 0;
    }
};