H指數
阿新 • • 發佈:2018-12-02
給定一位研究者論文被引用次數的陣列(被引用次數是非負整數)。編寫一個方法,計算出研究者的 h 指數。
h 指數的定義: “一位有 h 指數的學者,代表他(她)的 N 篇論文中至多有 h 篇論文,分別被引用了至少 h 次,其餘的 N - h 篇論文每篇被引用次數不多於 h 次。”
示例:
輸入: citations = [3,0,6,1,5]
輸出: 3
解釋: 給定陣列表示研究者總共有 5 篇論文,每篇論文相應的被引用了 3, 0, 6, 1, 5 次。
由於研究者有 3 篇論文每篇至少被引用了 3 次,其餘兩篇論文每篇被引用不多於 3 次,所以她的 h 指數是 3。
說明: 如果 h 有多種可能的值,h 指數是其中最大的那個。
思路:
可以將陣列排序 從前往後遍歷找臨界值 有h篇引用>=h次 其餘n-h篇引用次數<h 其中h篇可以用n-i表示
貼程式碼:
public static int hIndex(int[] citations) { if (citations == null || citations.length == 0) { return 0; } if (citations.length == 1) { //陣列長度為1情況 if (citations[0] >= 1) { return 1; } else { return 0; } } //陣列長度大於等於2 進行排序 h代表有h篇引用>=h次 其餘<=h次 其中h篇可以用n-i表示 Arrays.sort(citations); int n = citations.length; int res = 0; if (citations[0] >= n) { res = n; } else { for (int i = 1; i < n; i++) { if (citations[i] >= (n - i) && citations[i - 1] <= (n - i)) { res = Math.max(res, n - i); break; } } } return res; }