Java经典算法:citations数组按升序排序

如果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的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。在这里插入图片描述

Guess you like

Origin blog.csdn.net/zhaozihao594/article/details/105372465