【力扣】274. H 指数

简介: 【力扣】274. H 指数

题目描述

给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数

根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少h 篇论文被引用次数大于等于 h 。如果 h 有多种可能的值,h 指数 是其中最大的那个。

示例 1:

输入:citations = [3,0,6,1,5]

输出:3

解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。

由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。

示例 2:

输入:citations = [1,3,1]

输出:1

提示:

  • n == citations.length
  • 1 <= n <= 5000
  • 0 <= citations[i] <= 1000

解题方法

  • C
// 自定义比较函数
int mycmp(int* a, int* b) { return *a - *b; }
// [3,0,6,1,5] 5
int hIndex(int* citations, int citationsSize) {
    int h = 0;
    // 从小到大排序
    // [0,1,3,5,6]
    qsort(citations, citationsSize, sizeof(int), mycmp);
    // i = 4; h = 0;
    // i = 3; h = 1; 
    // i = 2; h = 2;
    // i = 1; h = 3;
    for (int i = citationsSize - 1; i >= 0 && citations[i] > h; i--) {
        h++;
    }

    return h;
}

复杂度分析

时间复杂度为 O(nlog⁡n),其中 n 为数组 citations 的长度。

空间复杂度为 O(log⁡n),其中 n 为数组 citations 的长度。


相关文章
|
7月前
|
算法 Java
LeetCode第69题x 的平方根
这篇文章是关于LeetCode第69题"x的平方根"的解题分享。作者介绍了使用二分查找算法来解决这个问题的方法,这是一种简单且有效的方式,可以显著降低求解平方根的时间复杂度。文章提供了详细的分析、解题思路和Java语言的代码实现,最后总结了二分查找思想在算法中的应用价值。
LeetCode第69题x 的平方根
|
10月前
|
算法 索引
【力扣经典面试题】274. H 指数
【力扣经典面试题】274. H 指数
|
10月前
leetcode 275 H指数 2
leetcode 275 H指数 2
34 0
|
10月前
【力扣】69. x 的平方根
【力扣】69. x 的平方根
|
索引
每日一题 Leetcode-1499满足不等式的最大值
每日一题 Leetcode-1499满足不等式的最大值
76 0
|
存储 算法 Python
【力扣算法01】之最接近的三数之和
【力扣算法01】之最接近的三数之和
106 0
|
存储 C++
力扣 - 2、俩数相加
力扣 - 2、俩数相加
113 0
力扣69x的平方根
力扣69x的平方根
95 0
|
算法 前端开发
力扣-求众数
力扣-求众数
94 0
|
算法 PHP
力扣(LeetCode)算法题解:258. 各位相加
力扣(LeetCode)算法题解:258. 各位相加
136 0