Skip to content

Commit

Permalink
Merge branch 'master' of github.com:haoel/leetcode
Browse files Browse the repository at this point in the history
  • Loading branch information
haoel committed Oct 22, 2015
2 parents 2674c33 + 3e2fc16 commit 5b43c59
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 1 deletion.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ LeetCode
|285|[Inorder Successor in BST](https://leetcode.com/problems/inorder-successor-in-bst/) ♥ | [Java](./algorithms/java/src/inorderSuccessorInBST/inorderSuccessorInBST.java)|Medium|
|283|[Move Zeroes](https://leetcode.com/problems/move-zeroes/) | [C++](./algorithms/cpp/moveZeroes/moveZeroes.cpp)|Easy|
|278|[First Bad Version](https://leetcode.com/problems/first-bad-version/)| [C++](./algorithms/cpp/firstBadVersion/FirstBadVersion.cpp), [Java](./algorithms/java/src/firstBadVersion/firstBadVersion.java)|Easy|
|274|[H-Index](https://leetcode.com/problems/h-index/)| [C++](./algorithms/cpp/h-Index/h-Index.cpp)|Medium|
|273|[Integer to English Words](https://leetcode.com/problems/integer-to-english-words/)| [C++](./algorithms/cpp/integerToEnglishWords/IntegerToEnglishWords.cpp)|Medium|
|268|[Missing Number](https://leetcode.com/problems/missing-number/)| [C++](./algorithms/cpp/missingNumber/MissingNumber.cpp)|Medium|
|264|[Ugly Number II](https://leetcode.com/problems/ugly-number/)| [C++](./algorithms/cpp/uglyNumber/UglyNumber.II.cpp)|Medium|
|264|[Ugly Number II](https://leetcode.com/problems/ugly-number-ii/)| [C++](./algorithms/cpp/uglyNumber/UglyNumber.II.cpp)|Medium|
|263|[Ugly Number](https://leetcode.com/problems/ugly-number/)| [C++](./algorithms/cpp/uglyNumber/UglyNumber.cpp)|Easy|
|258|[Add Digits](https://leetcode.com/problems/add-digits/)| [C++](./algorithms/cpp/addDigits/addDigits.cpp)|Easy|
|226|[Valid Anagram](https://leetcode.com/problems/valid-anagram/)| [C++](./algorithms/cpp/anagrams/ValidAnagram.cpp)|Easy|
Expand Down
51 changes: 51 additions & 0 deletions algorithms/cpp/h-Index/h-Index.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// Source : https://leetcode.com/problems/h_index/
// Author : Calinescu Valentin
// Date : 2015-10-22

/***************************************************************************************
*
* Given an array of citations (each citation is a non-negative integer) of a
* researcher, write a function to compute the researcher's h-index.
*
* According to the definition of h-index on Wikipedia: "A scientist has index h if h of
* his/her N papers have at least h citations each, and the other N − h papers have no
* more than h citations each."
*
* For example, given citations = [3, 0, 6, 1, 5], which 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, his h-index is 3.
*
* Note: If there are several possible values for h, the maximum one is taken as the
* h-index.
*
***************************************************************************************/



/*
* 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) {
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;
}
};

0 comments on commit 5b43c59

Please sign in to comment.