当前位置: 首页 > news >正文

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

解决思路

计数排序,定义一个数组,用于存放各引用次数出现的次数,如果大于数组长度,那么就按数组长度算。然后从后往前遍历计数数组,找出出现次数大于等于引用次数的,返回出现次数。
时间复杂度O(n),空间复杂度O(n)

代码

class Solution {public int hIndex(int[] citations) {// 解决思路:计数排序,定义一个数组,用于存放各引用次数出现的次数,如果大于数组长度,那么就按数组长度算。然后从后往前遍历计数数组,找出出现次数大于等于引用次数的,返回出现次数。int n = citations.length;// 1. 定义数组,用于记录各元素出现次数。出现次数是0到数组长度int[] cnt = new int[n + 1];for (int i = 0; i < n; i++) {// 2. 如果出现次数大于等于数组长度,最后一个位置加1,否则对应位置加1.if (citations[i] >= n) {cnt[n]++;} else {cnt[citations[i]]++;}}// 2. 定义total记录出现次数int total = 0;// 3. 遍历数组,统计数组中每个引用次数的出现次数for (int i = n; i >= 0; i--) {total += cnt[i];// 4. 如果出现次数大于等于引用次数就返回。if (total >= i) {return i;}}return 0;}
}
http://www.xdnf.cn/news/414541.html

相关文章:

  • StringBuilder,StringJoiner,StringBuffer字符串处理类深度解析
  • 从零到精通:GoFrame 的 garray 模块深度解析与实战经验分享
  • Nacos源码—8.Nacos升级gRPC分析五
  • 【K8S学习之生命周期钩子】详细了解 postStart 和 preStop 生命周期钩子
  • 【日撸 Java 三百行】Day 13(链表)
  • 【AIGC梦幻婚纱美学】:白纱与花卉的浪漫算法融合
  • 2025-5-12 底部埋伏记录
  • Matlab 基于GUI的图像去雾技术GlobalHisteq、LocalHisteq和Retinex
  • 基于世界土壤数据库(HWSD)的中国土壤数据集(v1.1)(2009)
  • 大核极坐标码
  • vulhub-Stapler
  • 耀圣-高温釜进料口气动耐磨切断球阀:高粘度、高腐蚀颗粒介质的终极进料解决方案
  • DeepSeek | AI需求分析
  • 手机电池健康提示怎么看?
  • 封装echarts的柱状图+折线图+堆积图
  • 使用 Watt toolkit 加速 git clone
  • 栈和队列复习(C语言版)
  • 判断一个数组有没有重复值
  • k8s监控方案实践(三):部署与配置Grafana可视化平台
  • 【Redis】键值对数据库实现
  • Tenacity 高级使用指南:Python 重试机制的终极解决方案
  • 使用ACE-Step在本地生成AI音乐
  • 基于大模型预测的多发性硬化综合诊疗方案研究报告大纲
  • 棉花杂草检测数据集VOC+YOLO格式4279张2类别
  • 时空注意力机制深度解析:理论、技术与应用全景
  • 【笔试训练】给一个数组构建二叉树|从前序遍历与中序遍历构建二叉树|二叉树中的最大路径和
  • Windows远程桌面实现之十七:基于浏览器的文件和目录传输(二)
  • C++舆情监控爬虫程序实现
  • [特殊字符] 本地部署DeepSeek大模型:安全加固与企业级集成方案
  • 利用SSRF击穿内网!kali靶机实验