旅游网站开发的需求分析,吉林做网站,提升学历的正规平台,如何做网站新手个人教程275. H 指数 II
题目描述#xff1a; 给你一个整数数组 citations #xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数#xff0c;citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。
h 指数的定义#xff1a;h 代表“高引用次数”#xff0…275. H 指数 II
题目描述 给你一个整数数组 citations 其中 citations[i] 表示研究者的第 i 篇论文被引用的次数citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。
h 指数的定义h 代表“高引用次数”high citations一名科研人员的 h 指数是指他她的 n 篇论文中总共有 h 篇论文分别被引用了至少 h 次。且其余的 n - h 篇论文每篇被引用次数 不超过 h 次。
提示如果 h 有多种可能的值h 指数 是其中最大的那个。
请你设计并实现对数时间复杂度的算法解决此问题。数组已经按升序排列
考察重点274题中按照顺序查找符合元素。本题要求对数时间复杂度解决即需要二分法进行查找。即我们使用二分法查找数组当citations[i] len(citations)-i时说明其为h指数。
func HIndex2(citations []int) int {mlen, res : len(citations), 0if (mlen 1 citations[0] 0) || (citations[mlen-1] 0) { //排出[0]和[0,0,0]情况return 0}for left, right : 0, mlen-1; left right; {mid : left(right-left)/2oth : mlen - midif oth citations[mid] { //找到满足条件的了应该往左侧继续寻找因为 4,4,6,6,8,9,10 这种搜到6后他左侧的6oth更大达到5res othright mid - 1} else {left mid 1}}return res
}