274. H-Index

来源:互联网 发布:c语言图形输出 编辑:程序博客网 时间:2024/05/22 16:54

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 otherN − h papers have no more than h citations each."

For example, given citations = [3, 0, 6, 1, 5], which means the researcher has5 papers in total and each of them had received 3, 0, 6, 1, 5 citations respectively. Since the researcher has3 papers with at least 3 citations each and the remaining two withno 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.

Hint:

  1. An easy approach is to sort the array first.
  2. What are the possible values of h-index?
  3. A faster approach is to use extra space.


【思路】由题意可知  有h篇文章值>=h  其他的文章的值均 <=h

那么将 citations 从大到小排列 依次遍历 当 i>=citations[i]   说明从citations[i]往后的每一个 值都不比i大 (no more than)

而前i个citation 一定 at least    i;

     6 ->5->3->1->0

     0->1->2->3->4

class Solution {public:    int hIndex(vector<int>& citations) {       sort(citations.begin(),citations.end(),greater<int>());       int h =0;       for(int i=0;i<citations.size();i++){           if(i>=citations[i]) return i;       }       return citations.size();    }};


0 0
原创粉丝点击