如果citations数组按升序排序怎么办?您可以优化算法吗?
给定数组已排序,我们应该使用二进制搜索。
int hIndex(int[] citations) {
int len = citations.length;
if (len == 0) {
return 0;
}
if (len == 1) {
if (citations[0] == 0) {
return 0;
} else {
return 1;
}
}
int i = 0;
int j = len - 1;
while (i < j) {
int m = i + (j - i + 1) / 2;
if (citations[m] > len - m) {
j = m - 1;
} else {
i = m;
}
}
if (citations[j] > len - j) {
return len;
}
if (citations[j] == len - j) {
return len - j;
} else {
return len - j - 1;
}}
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。