三次AC,两次出现问题均卡在对分上面,对于最后的区间判断,当区间长度小于1时就停止迭代,然后判断左边,右边,如果都不行则返回0。思路参考的是wikipedia。
class Solution {
public:
int hIndex(vector<
int>& citations) {
if(citations.size()==
0)
return
0;
int left=
0;
int right=citations.size()-
1;
int N=citations.size();
while(
right-
left>
1)
{
int mid=
left+(
right-
left)/
2;
if(citations[
mid]>=N-
mid)
right=
mid;
else
left=
mid+
1;
}
if(citations[
left]>=N-
left)
return N-
left;
else if(citations[
right]>=N-
right)
return N-
right;
else
return
0;
}
};
转载请注明原文地址: https://ju.6miu.com/read-20229.html