Skip to content
Blogster on GitHub Dinesh on Twitter

275.H指数II

链接

思路

题目解析,主要是理解h指数的定义。

6

明白了题目,那么这道题就十分简单了,无非就是找到最后一个满足h指数的位置,那我们可以二分答案,l从0开始、r从n开始。因为案例中可能存在[0]的情况。因此l从0开始。

大致框架就是check(mid)

  1. true,l = mid
  2. fasle r = mid - 1

现在就是如何实现check函数,满足h指数那么至少要有h篇论文.

7

那么就需要保证至少,[该数组长度 - 当前位置的下标] >= 二分答案。这样才能够保证符合条件,例如上图所示至少要保证[5 - 3] = 2下标为2的位置上的数一定要大于等mid。

代码

class Solution {
    public int hIndex(int[] citations) {
       
        int n = citations.length;

        int l = 0;
        int r = n;
        while (l < r) {
            int mid = (l + r + 1) >> 1;
            if (citations[n - mid] >= mid) l = mid;
            else r = mid - 1;
        }
        return l;
    }

}