宁波网站建设caiyiduo,做网站的费属于什么费用,在线是免费生成器,网站seo啥意思怎么做原题链接#xff1a;力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台
题目描述 给你一个整数数组 citations #xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数#xff0c;citations 已经按照 升序排列 。计算并返回该研究者的 h…原题链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台
题目描述 给你一个整数数组 citations 其中 citations[i] 表示研究者的第 i 篇论文被引用的次数citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。 h 指数的定义h 代表“高引用次数”high citations一名科研人员的 h 指数是指他她的 n 篇论文中总共有 h 篇论文分别被引用了至少 h 次。 请你设计并实现对数时间复杂度的算法解决此问题。 样例1
输入 citations [0,1,3,5,6] 输出 3 样例2
输入 citations [1,2,100] 输出 2 Tag 二分 个人做法
个人用的是Acwing的二分法,特判了一下 class Solution {
public:int hIndex(vectorint citations) {int size citations.size();int l 0,r size-1;while(lr){int mid (lr)/2;if(citations[mid] size-mid ) r mid;else l mid1;}if(l r citations[l] 0) return 0; return size-l;}
}; 官方做法
class Solution {
public:int hIndex(vectorint citations) {int size citations.size();int l 0,r size-1;while(lr){int mid (lr)/2;if( citations[mid] (size-mid) ) r mid-1;else l mid1;}return size-l;}
}; 官方思路是把左区间放到满足条件的最小值处右区间放到不满足条件的最大值处且跳出循环必须是 l 严格大于 r ,因为最后结果是拿 l 算的所以当l r时此时的 l 仅仅是不满足条件的最大值处