本题目最重要的是要读懂题意
超过h的个数为h,超过h+1的个数小于h+1都为h
比如citations = [3, 0, 6, 1, 5] 不小于3的有3个,h=3;
比如citations = [1,1] 不小于1的有2个,但是不小于2的有0个,h=1;
AC代码:
class Solution {
public:
int hIndex(vector<int>& citations) {
int n=citations.size();int i=1,flag=0,j=0;
sort(citations.begin(),citations.end());
if(n==0||citations[n-1]==0) return 0;
if(citations[0]>=citations.size())
return citations.size();
while(i++<n){
while(citations[j]<i&&j<n)
j++;
if(n-j==i)
break;
if(n-j<i)
{flag=1;break;}
}
if(flag)
i--;
return i;
}
};