给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。
h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 N - h 篇论文每篇被引用次数 不超过 h 次。
例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/h-index
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
输入:citations = [3,0,6,1,5]
输出:3
解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。
由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/h-index
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
降序排序 + 最大正方形边长
1 public class HIndex {
2 public int hIndex(int[] citations) {
3 /**
4 * @Method: hIndex
5 * @Author: haifwu
6 * @Version: 1.0
7 * @Date: 23/05/2021 11:34
8 * @param citations
9 * @Return: int
10 * @Description:
11 * 倒序排序 + 最大矩形的边长
12 */
13 Arrays.sort(citations);
14 int n = citations.length, i = 0;
15 while(i < n && citations[n - i - 1] > i) {
16 i++;
17 }
18 return i;
19 }
20
21 public static void main(String[] args) {
22 int[] citations = {3,0,6,1,5};
23 System.out.println(new HIndex().hIndex(citations));
24 }
25 }
原文:https://www.cnblogs.com/haifwu/p/14800957.html