H-Index Solutions in C++
Number 274
Difficulty Medium
Acceptance 36.3%
Link LeetCode
Other languages Go
Solutions
C++ solution by haoel/leetcode
// Source : https://leetcode.com/problems/h_index/// Author : Calinescu Valentin, Hao Chen// Date : 2015-10-22/** Solutions* =========** A simple solution would be to sort the vector and then run through it starting with* the last element. At every step we need to check whether this element is not less than* the remaining number of elements bigger than it(including itself) and all the values of* the other elements smaller than it are not more than that number. The h_index is this* number of elements bigger than it(including itself).** Time Complexity: O(N log N)* Space Complexity: O(1)**/#include <algorithm>class Solution {public:int hIndex(vector<int>& citations) {return hIndex02(citations);return hIndex01(citations);}int hIndex01(vector<int>& citations) {sort(citations.begin(), citations.end());int h_index = 0;for(int i = citations.size() - 1; i >= 0; i--)if(citations[i] >= citations.size() - i && (i - 1 < 0 || citations[i - 1] <= citations.size() - i))h_index = citations.size() - i;return h_index;}// same solution but a bit different implemtationint hIndex02(vector<int>& citations) {sort(citations.begin(), citations.end());int n = citations.size();for (int i=0; i<n; i++){if (citations[i] >= n-i){return n-i;}}return 0;}};