【力扣】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 的长度。


相关文章
|
3月前
|
算法
LeetCode第16题最接近的三数之和
该文章介绍了 LeetCode 第 16 题最接近的三数之和的解法,与第 15 题类似,通过双指针法减少循环次数,根据差值的绝对值来更新最接近的和,并总结了双指针可减少循环次数的要点。
|
5月前
|
Java
贪心 -力扣860.柠檬水找零力扣2208.将数组和减半的最少操作次数力扣179.最大数力扣376.摆动序列
贪心 -力扣860.柠檬水找零力扣2208.将数组和减半的最少操作次数力扣179.最大数力扣376.摆动序列
|
6月前
|
算法 索引
【力扣经典面试题】274. H 指数
【力扣经典面试题】274. H 指数
|
6月前
leetcode 275 H指数 2
leetcode 275 H指数 2
22 0
|
6月前
leetcode-16:最接近的三数之和
leetcode-16:最接近的三数之和
50 0
|
存储 算法 Python
【力扣算法01】之最接近的三数之和
【力扣算法01】之最接近的三数之和
80 0
|
算法 C语言 C++
【二分查找】275. H 指数 II
【二分查找】275. H 指数 II 在另一篇博客里讲过二分法的模板: 《二分法的模板讲解》
78 0
|
测试技术 C++
力扣16-最接近的三数之和&力扣18-四数之和
力扣16-最接近的三数之和&力扣18-四数之和
83 0
|
算法 安全 Swift
LeetCode - #16 最接近的三数之和
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
力扣 -- 16. 最接近的三数之和
力扣 -- 16. 最接近的三数之和