给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照 升序排列 。编写一个方法,计算出研究者的 h 指数。
h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数不多于 h 次。)"
class Solution:
def hIndex(self, citations: List[int]) -> int:
# i 代表元素的索引
# ele = citations[i]为列表中的元素
# n-i代表比ele大或等于的文章数
# 二分查找
left = 0
right = len(citations)-1
n= len(citations)
while left <= right:
mid = left + (right-left)//2
if citations[mid]==n-mid:
return n-mid
elif citations[mid]>n-mid:
right = mid-1
elif citations[mid]<n-mid:
left = mid+1
return n-left