H-Index

来源:互联网 发布:珠海 软件开发工程师 编辑:程序博客网 时间:2024/05/16 08:55

274. H-Index

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.


解法一:算法时间复杂度o(n*logn),空间复杂度o(1);

class Solution {public:int hIndex(vector<int>& citations) {int h=0,count=citations.size();          //对数组从小到大排序for (int i=0;i<citations.size();++i) {if (citations[i]>=count)             //若满足条件则返回h{h = count;break;}--count;}return h;}};


解法二:算法时间复杂度o(n),空间复杂度o(n);

class Solution {public:int hIndex(vector<int>& citations) {int length = citations.size();int *arr = new int[length+1];for (int i=0;i<=length;++i){arr[i] = 0;}for (int i=0;i<length;++i)                      //记录每个值对应的出现次数{if (citations[i]>=length)               //若值大于数组长度则将值算作数组长度{arr[length]++;}else{arr[citations[i]]++;}}int h = 0;for (int i=length;i>=0;--i){h += arr[i];if (h>=i)                                //满足条件则返回{return i;}}return h;}};




0 0
原创粉丝点击