LeetCode 274. H-Index

 1 class Solution {
 2 public:
 3     int hIndex(vector<int>& citations) {
 4         sort(citations.begin(), citations.end());
 5         for(int i = 0; i < citations.size(); ++i){
 6             if(citations[i] >= citations.size() - i)
 7                 return citations.size() - i;
 8         }
 9         
10     }
11 };

N个数中有h个数>=于h,其余的<h。

在纸上写出后便易得,当N个数排序后,在citation[i]的右边(包括它本身),共有N-i个数,这些数均>=citation[i],即有N-i个数>=citation[i],使h=N-i,如果此时citation[i]>=N-i,那么必定有N-i个数>=N-i,此时N-i就是要求的h。因为h取最大值,所以i从0开始。

 

 

追加:

发现一个漏洞,当输入[0]时,照理来说是没法return的,但是不知为何LeetCode替我return了0……

正确代码:

 1 class Solution {
 2 public:
 3     int hIndex(vector<int>& citations) {
 4         sort(citations.begin(), citations.end());
 5         for(int i = 0; i < citations.size(); ++i){
 6             if(citations[i] >= citations.size() - i)
 7                 return citations.size() - i;
 8         }
 9         return 0;
10         
11     }
12 };

 

posted @ 2016-03-19 21:37  co0oder  阅读(578)  评论(0编辑  收藏  举报