LeetCode 275. H 指数 II
给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照 升序排列 。编写一个方法,计算出研究者的 h 指数。
h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数不多于 h 次。)"
Code
def hIndex(self, citations: List[int]) -> int:
if len(citations) is None:
return 0
n = len(citations)
l,r=0,n
while l<r:
# mid=l+(r-l)//2
mid = (r+l)//2
if citations[mid] >= n-mid:#target
r=mid #向左查找
else:
l=mid+1#向右查找
return n-l
想法
初始条件:left = 0, right = n
终止:left > right
向左查找:right = mid
向右查找:left = mid+1
较查找目标或将查找条件应用于集合的中间值;如果条件不满足或值不相等,则清除目标不可能存在的那一半
。
将原始列表分成了两个子列表:citations[0 : pivot - 1] 和 citations[pivot + 1 : n]