給定一位研究者論文被引用次數(shù)的數(shù)組(被引用次數(shù)是非負(fù)整數(shù)),數(shù)組已經(jīng)按照 升序排列 。編寫一個(gè)方法,計(jì)算出研究者的 h 指數(shù)。
h 指數(shù)的定義: “h 代表“高引用次數(shù)”(high citations),一名科研人員的 h 指數(shù)是指他(她)的 (N 篇論文中)總共有 h 篇論文分別被引xx用了至少 h 次。(其余的 N - h 篇論文每篇被引用次數(shù)不多于 h 次。)"
示例:
輸入: citations = [0,1,3,5,6]
輸出: 3
解釋: 給定數(shù)組表示研究者總共有 5 篇論文,每篇論文相應(yīng)的被引用了 0, 1, 3, 5, 6 次。
由于研究者有 3 篇論文每篇至少被引用了 3 次,其余兩篇論文每篇被引用不多于 3 次,所以她的 h 指數(shù)是 3。
說明:
如果 h 有多有種可能的值 ,h 指數(shù)是其中最大的那個(gè)。
進(jìn)階:
這是 H 指數(shù) 的延伸題目,本題中的 citations 數(shù)組是保證有序的。
你可以優(yōu)化你的算法到對(duì)數(shù)時(shí)間復(fù)雜度嗎?
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/h-index-ii
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
大佬題解:https://leetcode-cn.com/problems/h-index-ii/solution/7xing-ji-jian-dai-ma-c-lower_boundsi-xiang-by-ydon/
二分查找:
lower_bound的定義:找到滿足nums[i]>=target的最小的i
class Solution {
public:
int hIndex(vector<int>& citations) {
int n=citations.size();
int l=0,h=n;
while(l<h){
int min=(l+h)>>1;
if(n-min<=citations[min])h=min;
else l=min+1; }//assert lo==hi
return n-l;
}
};