275.H指數(shù)II
https://leetcode-cn.com/problems/h-index-ii/solution/275-hzhi-shu-ii-274hzhi-shu-yi-tao-dai-m-k8qk/
難度:中等
題目
給定一位研究者論文被引用次數(shù)的數(shù)組(被引用次數(shù)是非負整數(shù)),數(shù)組已經(jīng)按照 升序排列 遮晚。編寫一個方法适瓦,計算出研究者的 h 指數(shù)。
h 指數(shù)的定義: “h 代表“高引用次數(shù)”(high citations)三娩,一名科研人員的 h 指數(shù)是指他(她)的 (N 篇論文中)總共有 h 篇論文分別被引用了至少 h 次。(其余的 N - h 篇論文每篇被引用次數(shù)不多于 h 次妹懒。)"
說明:
- 如果 h 有多有種可能的值 雀监,h 指數(shù)是其中最大的那個。
進階:
- 這是 H 指數(shù) 的延伸題目,本題中的 citations 數(shù)組是保證有序的会前。
- 你可以優(yōu)化你的算法到對數(shù)時間復雜度嗎好乐?
示例
輸入: citations = [0,1,3,5,6]
輸出: 3
解釋: 給定數(shù)組表示研究者總共有 5 篇論文,每篇論文相應的被引用了 0, 1, 3, 5, 6 次瓦宜。
由于研究者有 3 篇論文每篇至少被引用了 3 次蔚万,其余兩篇論文每篇被引用不多于 3 次,所以她的 h 指數(shù)是 3临庇。
分析
進階里面是這道題是 274.H指數(shù)的延伸題目...
反了吧反璃,感覺這道題才是274的延伸題目。
- 這道題還是排好序的假夺,275是未排序的淮蜈,還需要一一行排序的代碼才能提交成功。
- 這道題還明顯提示你已卷,能否通過對數(shù)的時間復雜度梧田,對數(shù)是啥?不就是二分么侧蘸。
那還考慮什么想mid指針偏移條件吧:
h代表總共有h篇論文至少被引用了H次裁眯。
那還瞅啥,如果citations[index] >= length - index讳癌,表示為滿足題意的穿稳,right = mid -1炒事,
否則left = mid + 1就行了存崖,最終return length - left 即可盐碱。
解題
class Solution:
def hIndex(self, citations):
# 不注釋排序锣杂,通過274...
# citations.sort()
lg = len(citations)
left, right = 0, lg - 1
while left <= right:
mid = (left + right) // 2
if citations[mid] >= lg - mid:
right = mid - 1
else:
left = mid + 1
return lg - left
歡迎關注我的公眾號: 清風Python吸奴,帶你每日學習Python算法刷題的同時伏尼,了解更多python小知識侵贵。
我的個人博客:https://qingfengpython.cn