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


相关文章
|
8月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
423 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
数据采集 弹性计算 运维
阿里云付费模式介绍:节省计划、预留实例券、抢占式实例区别及选择参考
在我们购买阿里云服务器时,可选的付费模式有包年包月、按量付费、节省计划、预留实例券和抢占式5种付费模式,满足长周期低成本以及短周期高弹性的计算要求,一般用户选择最多的是包年包月和按量付费,包年包月购买适合长期稳定的业务,购买周期越长,折扣越高,按量付费购买紧贴业务需求购买资源的付费方式,秒级计费,用多少花多少。本文主要为大家介绍节省计划、预留实例券、抢占式实例三种付费模式,以供参考。
|
存储 机器学习/深度学习 算法
【博士每天一篇文献-算法】Gradient Episodic Memory for Continual Learning
本文介绍了一种名为Gradient Episodic Memory(GEM)的算法,旨在解决神经网络在持续学习中的灾难性遗忘问题,通过构建经验记忆库传递知识,同时提出了评估模型在任务间转移知识和避免遗忘能力的度量指标。
561 0
【博士每天一篇文献-算法】Gradient Episodic Memory for Continual Learning
|
缓存 开发框架 安全
【Uniapp 专栏】详解 Uniapp 的网络请求功能特性
【5月更文挑战第13天】Uniapp是一款跨平台开发框架,提供便捷的网络请求功能,支持HTTP/HTTPS协议及GET/POST等多种请求方法。它允许设置请求参数、处理响应数据,并有超时时间、缓存策略及错误处理机制。还能与状态管理、页面交互结合,确保数据安全并进行性能优化。通过案例和比较,展现了Uniapp在网络请求上的优势,为开发高质量移动应用奠定基础。理解和掌握这些特性对于创建出色应用体验至关重要。
690 1
【Uniapp 专栏】详解 Uniapp 的网络请求功能特性
|
网络协议 算法 数据库
OSPF中的Stub区域详解
OSPF中的Stub区域详解
889 2
|
安全 API 调度
异步编程中常见的问题和处理方式
【6月更文挑战第23天】在python中`asyncio` 提供PriorityQueue和LifoQueue,用于不同检索策略。异步编程需注意任务调度、错误处理和资源管理,以提高响应性和避免阻塞。
838 7
异步编程中常见的问题和处理方式
defineProps和defineEmits
本文介绍了Vue 3中的`defineProps`和`defineEmits`函数的用法,其中`defineProps`用于声明组件的属性(props),以便从父组件接收数据,而`defineEmits`用于定义组件可以触发的自定义事件,从而实现子组件向父组件传递数据的功能。
|
消息中间件 监控 中间件
阿里云中间件有哪些?这里最全面
这其实是一个比较虚的概念。广义的中间件范围很广。起沟通作用的都可以认为是中间件。甚至ODBC这样的东西你也可以认为是中间件。 而阿里云的中间件就比较多了
9922 113
|
人工智能 搜索推荐 算法
爱思唯尔的KBS——模板、投稿、返修、接收的总结
爱思唯尔的KBS——模板、投稿、返修、接收的总结
|
Java 测试技术 开发工具
Appium Studio 初体验(windows做ios自动化,录制appium脚本)
Appium Studio 初体验(windows做ios自动化,录制appium脚本)
1529 0
Appium Studio 初体验(windows做ios自动化,录制appium脚本)