H指数

  • 题目
  • 思路与算法
  • 代码实现
  • 复杂度分析

题目

思路与算法

  1. 翻译一下题目意思:给的数组就是每一篇论文的引用次数,至少有h篇文章被引用了h次的意思等价于我们不恰当的假设这个科学家每次发表的文章的引用次数都在下降,出道即巅峰,然后一直衰落,那么第n篇的引用次数至少要比当前的序号大才可以匹配H指数的定义。
  2. 综上:思路为倒序排列(顺便再重温一下排序,使用Arrays类内嵌的方法TimSort方法的原型方法:归并排序方法来重新手写一遍),然后对比序号和实际数值的大小,找到那个引用次数小于序号的,然后减一,即是H指数。

代码实现

class Solution {public int hIndex(int[] citations) {Merge_Sort(citations);int n = 1;for (int i = 0;i < citations.length; i++,n++){if ( citations[i] < n){break;}}return n-1;}private static void Merge_Sort(int[] arr) {int[] temp = new int[arr.length];Merge_Sort(arr, 0, arr.length - 1, temp);}private static void Merge_Sort(int[] arr, int left, int right, int[] tmp) {if (left < right) {int mid = (left + right) / 2;Merge_Sort(arr, left, mid, tmp);Merge_Sort(arr, mid + 1, right, tmp);Merge(arr, left, mid, right, tmp);}}private static void Merge(int[] arr, int left, int mid, int right, int[] tmp) {int i = left;int j = mid + 1;int k = 0;while (i <= mid && j <= right) {if (arr[i] >= arr[j]) {tmp[k++] = arr[i++];} else {tmp[k++] = arr[j++];}}while (i <= mid) {tmp[k++] = arr[i++];}while (j <= right) {tmp[k++] = arr[j++];}k = 0;while (left <= right) {arr[left++] = tmp[k++];}}
}

复杂度分析

分类 Value
时间复杂度 O(MNlogN)
空间复杂度 O(M)

20200316:H指数(leetcode274)相关推荐

  1. 全球 Top 1000 计算机科学家 h 指数公布,中国顶尖计算机科学家人数进入前三

    整理 | Carol 出品 | CSDN(ID:CSDNnews) 近日,Guide2Research公布了2021年世界顶尖1000名计算机科学家排名.美国科学家登榜数量达614名,稳居上榜科学家数 ...

  2. 【数据结构与算法】之深入解析“H指数II”的求解思路与算法示例

    一.题目要求 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照升序排列,计算并返回该研究者的 h 指数. h ...

  3. 【数据结构与算法】之深入解析“H指数”的求解思路与算法示例

    一.题目要求 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,计算并返回该研究者的 h 指数. 根据维基百科上 h 指数的定义:h 代表 ...

  4. LeetCode Algorithm 274. H 指数

    274. H 指数 Ideas H指数表示的是有h篇论文被引用了至少h次. 我们可以将citations逆序排列,表示引用次数从高到底排列. 如果我们从前向后遍历数组,那么第i位上值v,就表示至少有i ...

  5. leetcode 275. H 指数 II

    给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照 升序排列 .编写一个方法,计算出研究者的 h 指数. h 指数的定义: "h 代表"高引用次数" ...

  6. leetcode275. H指数 II(二分法)

    给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照升序排列.编写一个方法,计算出研究者的 h 指数. h 指数的定义: "h 代表"高引用次数"(h ...

  7. LeetCode 275. H指数 II(二分查找)

    1. 题目 给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照升序排列.编写一个方法,计算出研究者的 h 指数. h 指数的定义: "h 代表"高引用次数&q ...

  8. LeetCode 274. H指数(排序,哈希)

    1. 题目 给定一位研究者论文被引用次数的数组(被引用次数是非负整数).编写一个方法,计算出研究者的 h 指数. h 指数的定义: "h 代表"高引用次数"(high c ...

  9. 重磅!全球Top 1000计算机科学家h指数公布:中国53位学者上榜!张宏江居大陆科学家之首...

    近日,Guide2Research刚刚出炉了2021年世界顶尖1000名计算机科学家排名.美国614名科学家实力霸榜.吴恩达.李飞飞等入选的华人学者过百.中国科学家53人上榜,张宏江居中国大陆科学家之 ...

最新文章

  1. 中国农科院微生物生态和进化方向博士后招聘(有高通量数据分析经验者优先)...
  2. 最短路(遍历边)计蒜客—DD坐地铁
  3. 【线程】线程基本函数
  4. @程序员,Web 开源神器了解一下? | 程序员硬核评测
  5. pyspider—爬取下载图片
  6. HardSoft-Viewer SQL
  7. thymeleaf 判断对象是否为空_JVM面试问题系列:判断对象是否已死和四种垃圾回收算法总结...
  8. 京东数科“机房巡检机器人”高价值专利荣获专利大奖
  9. H5禁止苹果手机页面缩放
  10. 电脑查看连接过的WiFi密码
  11. 从pwn-summoner理解first fit
  12. 第四十天 阿乐在其中—Android小游戏的飞机(四)加入敌人
  13. “不能read和written”的关键因素—内存
  14. #入坑keychron#Macbook外置机械键盘的不二之选-keychron
  15. RAC 网络心跳 磁盘心跳 本地心跳 控制文件磁盘心跳
  16. SAP 打开或关闭财务账期和物料账期等事物代码清单-OB52/MMPV/MMRV/OKP1/1KEF
  17. FileNotFoundException open failed: XXXXXXX EPERM (Operation not permitted)的坑
  18. 春运赶火车小心这些骗术
  19. 扫地机器人腿是咕噜_智能家居 篇一:洒哇地咔钟点狗智能擦地机初步评测:试水之作 略有失望...
  20. 2012站长论坛排行榜

热门文章

  1. 如何用 Python 实现超级玛丽的界面和状态机?
  2. Google 是如何做 Code Review 的?| 原力计划
  3. 规模比互联网大 30 倍的物联网,入门太难了!
  4. Java 13 发布进入倒计时!
  5. IEEE 解除华为限制;AWS、谷歌云大规模故障;TypeScript 3.5 发布 | 极客头条
  6. Hadoop巨头完成合并,成全球第二大开源软件公司!
  7. 程序员为什么 365 天背电脑包?这答案我服!
  8. Google 杀死了 160 个产品!
  9. 价格逼近 2 万美元大关,比特币到底是不是庞氏骗局?
  10. unity android屏幕自适应,Android应用开发之unity打开移动摄像头,并自适应屏幕显示摄像头数据。兼容android和ios...