[路飞]_leetcode-274-H 指数

简介: leetcode-274-H 指数

网络异常,图片无法展示
|


「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战


[题目地址][B站地址]


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


h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)总共h 篇论文分别被引用了至少h 次。且其余的 n - h 篇论文每篇被引用次数 不超过h 次。


例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。


提示: 如果 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


解题思路


本题其实并不困难,只是这个题意理解起来会有点绕,这里我们抓住重点即可。


如果说有 h 篇论文,它们的引用次数大于等于 h 次,那这个 h 就是一个合法的 h,而 h 指数就是所有满足条件的 h 值中最大的那一个。


那这个题怎么解呢?


这里我们可以首先对输入数组进行排序,以示例1 中数据为例,排序后的结果如下:

[0,1,3,5,6]


那排序的作用是什么呢?我们接着往下看。


此时我们从后向前的扫描排序后的数组,并记录当前的 h 值。初始的时候,我们定义 h = 1,此时位置在数组的末尾。


1
[0,1,3,5,6]
复制代码


接下来我们判断数组当前位置的值(也就是引用次数),是否大于等于当前的 h,如果满足条件,说明我们找到了 h 篇论文,并且它们的引用次数大于等于 h,那么此时的 h 值就是一个合法的 h 值。


接下来我们继续向前查找,当我们找到了一个不合法的位置的时候,就可以退出循环了,而我们最后找到的合法的 h 值,就是最大的合法的 h 值,也就是我们要求的 H 指数


代码实现


var hIndex = function (citations) {
  // 对输入数组升序排序
  citations.sort((a, b) => a - b)
  // 获取数组的长度
  let len = citations.length,
  // 初始化 h 指数为 1
    h = 1
  // 当当前位置的论文引用次数大于等于后续的论文数量的时候
  // 说明当前 h 合法(当前位置及后续的所有论文引用次数都大于h,且当前位置和后续数量为h)
  while (citations[len - h] >= h) h++
  // while 循环终止,找到了第一个不合法的位置,返回结果为 h-1
  return h - 1
}
复制代码


至此我们就完成了 leetcode-274-H 指数


如有任何问题或建议,欢迎留言讨论!👏🏻👏🏻👏🏻

相关文章
|
Ubuntu
百度搜索:蓝易云【解决Ubuntu终端下载速度过慢问题】
请注意,下载速度受到多种因素的影响,包括网络状况、软件源的位置和服务器负载等。尝试上述方法可能会有所改善,但并不保证能够解决所有情况下的下载速度过慢问题。
514 6
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
智能自动化全方位解读:定义、技术、市场、应用,一文解答所有
智能自动化融合AI与RPA技术,重塑企业效率。它可处理非结构化数据、跨系统协同、自主决策,广泛应用于财务、人力、制造等领域,助力降本增效、合规创新。2025年全球市场规模将达4200亿美元,中国超9500亿元,成为最大单一市场。实在Agent等标杆产品实现“一句话完成工作”,5000+企业已落地应用,部署快、回报高、无需改造系统,正推动人机协同的数字革命。
505 154
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
14353 58
|
11月前
|
人工智能 搜索推荐 算法
谁是AI搜索先锋? Elastic先锋者招募令正式启动!
阿里云 x Elastic 携手推出“Elastic Pioneer”先锋者计划,开发者们可以通过贡献内容获取积分,赢取月度和年度奖励,包括 ElasticON 新加坡站门票及与技术大咖交流机会。
551 2
|
缓存 前端开发 JavaScript
基于 Next.js 的今日热门榜单平台
**今日热榜**是一款基于Next.js构建的热点聚合平台,实时整合17+主流平台热门内容,提供明暗主题切换、响应式适配、SSR极速加载等特性,支持Vercel一键部署,助你轻松掌握全网热点。
159 0
基于 Next.js 的今日热门榜单平台
|
安全 物联网 网络安全
公网IP证书怎么申请?
在数字化时代,互联网通信的安全性日益重要。公网IP证书(IP SSL证书)通过加密技术保护数据传输,确保数据的保密性、完整性和身份验证。适用于物联网设备、API接口和远程服务器等场景,提升用户信任度和合规性。申请流程包括确认IP地址、选择服务商、生成CSR和私钥、提交申请并验证、接收安装证书及测试优化。
公网IP证书怎么申请?
|
人工智能 监控 Cloud Native
【涂鸦即艺术】基于云应用开发平台 CAP 部署 AI 实时生图绘板
本实验介绍如何使用阿里云的云原生应用开发平台CAP、函数计算FC和日志服务SLS,三步创建AI实时绘画平台。
【涂鸦即艺术】基于云应用开发平台 CAP 部署 AI 实时生图绘板
|
存储 算法 API
Flink DataStream API 批处理能力演进之路
本文由阿里云 Flink 团队郭伟杰老师撰写,旨在向 Flink Batch 社区用户介绍 Flink DataStream API 批处理能力的演进之路。
906 2
Flink DataStream API 批处理能力演进之路
|
Java 存储 数据库
如何用JAVA基于时间戳回放历史数据?
如何用JAVA基于时间戳回放历史数据?
329 4
|
Ubuntu Linux
服务器硬件 做raid操作 ubuntu linux做raid
服务器硬件 做raid操作 ubuntu linux做raid
466 0