题目:
题解:
这道题让我挣扎了一晚上,第二天终于让我发现了端倪。我认为这道题的一个关键在于发现两个h中一个h是主要的,主要的h是文章数第二的才是发表数,只需要找到的位置 i 上的值大于等于(citations.size()-i)文章数即是合法的一个位置在此位置之后找到的所有位置都是满足的,所以答案可能在这一位之前或者就是这一位,所以可以使用~01~泛型查找即可。
int hIndex(vector<int>& citations) {
int l=0,r=citations.size()-1,mid;
while(l<r){
mid=(l+r)>>1;
if(citations[mid]>=citations.size()-mid)r=mid;
else l=mid+1;
}
if(citations[l]>=citations.size()-l)return citations.size()-l;
return 0;
}
题后反思:这里要根据题意注意二分查找失败的情况