天津市津南区教育网站建设招标,手机网站跳出率低,做网站对电脑要求高吗,电信网站备案查询系统1. 题目
给定一位研究者论文被引用次数的数组#xff08;被引用次数是非负整数#xff09;#xff0c;数组已经按照升序排列。编写一个方法#xff0c;计算出研究者的 h 指数。
h 指数的定义: “h 代表“高引用次数”#xff08;high citations#xff09;#xff0c;…1. 题目
给定一位研究者论文被引用次数的数组被引用次数是非负整数数组已经按照升序排列。编写一个方法计算出研究者的 h 指数。
h 指数的定义: “h 代表“高引用次数”high citations一名科研人员的 h 指数是指他她的 N 篇论文中至多有 h 篇论文分别被引用了至少 h 次。其余的 N - h 篇论文每篇被引用次数不多于 h 次。
示例:
输入: citations [0,1,3,5,6]
输出: 3
解释: 给定数组表示研究者总共有 5 篇论文每篇论文相应的被引用了 0, 1, 3, 5, 6 次。由于研究者有 3 篇论文每篇至少被引用了 3 次其余两篇论文每篇被引用不多于 3 次所以她的 h 指数是 3。说明:
如果 h 有多有种可能的值 h 指数是其中最大的那个。进阶
本题中的 citations 数组是保证有序的。
你可以优化你的算法到对数时间复杂度吗来源力扣LeetCode 链接https://leetcode-cn.com/problems/h-index-ii 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 解题
类似题目274. H指数
本题已排序直接一个一个的搜索或者二分搜索
class Solution {
public:int hIndex(vectorint citations) {int i citations.size()-1, papers 0;while(i 0 papers citations[i]){papers;i--;}return papers;}
};二分查找
class Solution {
public:int hIndex(vectorint citations) {int l 0, r citations.size()-1, mid, n citations.size();//找第一个citations[i] n-iwhile(l r){mid l ((r-l)1);if(citations[mid] n-mid)l mid1;else if(citations[mid] n-mid){if(mid0 || citations[mid-1] n-mid)return n-mid;r mid-1;}}return n-l;//试下[1,1],结果是1}
};