275. H 指数 II

https://leetcode-cn.com/problems/h-index-ii/

解法一:二分

数组有序,因此用mid迭代,则论文篇数为n-mid,每篇至少引用citations[mid]次 可以推知当找到n-mid == citations[mid]时,mid就是所求,因为数组有序,mid右移n-mid减小 citations[mid]增大,左移则相反,两种情况都不可能找到更大的h 当n-mid > citations[mid]时,区间右移 反之左移。都是为了找到平衡点,使n-mid == citations[mid] 最终left为所求下标,使得h=n-left 注意:h 指数是 论文数量,不是引用次数。

class Solution:
    def hIndex(self, citations) -> int:
        n = len(citations)
        left = 0
        right = n - 1
        while left <= right:
            mid = left + (right - left) // 2
            if n - mid > citations[mid]:
                left = mid + 1
            else:
                right = mid - 1
        return n - left

最后更新于