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

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

示例:

输入: citations = [0,1,3,5,6]
输出: 3
解释: 给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 0, 1, 3, 5, 6 次。由于研究者有 3 篇论文每篇至少被引用了 3 次,其余两篇论文每篇被引用不多于 3 次,所以她的 h 指数是 3

说明:

如果 有多有种可能的值 ,h 指数是其中最大的那个。

进阶:

  • 这是 H指数 的延伸题目,本题中的 citations 数组是保证有序的。
  • 你可以优化你的算法到对数时间复杂度吗?

思路:

二分查找。

根据题意:找的是某个点,满足这个点的值 > = 它和它右侧的点个数之和cnt情况下,cnt就是当前的h指数

如果已经有h指数了,就可以试着往左找,因为越左cnt越大,h指数也越大,所以左侧可能存在更大的h值,

如果目前还没有h指数,就只能试着缩小cnt,往右找,

此题缩小搜索范围的思路就可以用二分查找来实现。

class Solution(object):def hIndex(self, citations):""":type citations: List[int]:rtype: int"""l = len(citations)lo, hi = 0, l - 1res = 0while(lo <= hi):mid = lo + (hi - lo) // 2cnt = l - mid #包括mid自身右边还有的元素个数if citations[mid] >= cnt: res = cnthi = mid -1else:lo = mid + 1return res                         

LeetCode-Python-275. H指数 II相关推荐

  1. LeetCode 981. 基于时间的键值存储 / 274. H 指数 / 275. H 指数 II

    981. 基于时间的键值存储 2021.7.10 每日一题 题目描述 创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作:1. set(string key, string value, ...

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

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

  3. leetcode 275. H 指数 II

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

  4. 275. H 指数 II

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

  5. LeetCode Algorithm 274. H 指数

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

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

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

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

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

  8. leetcode 274, 275. H-Index I, II(H 指数问题合集,线性查找/二分查找)

    274. H-Index https://leetcode.com/problems/h-index/ 题解 第一遍没看懂题目.看了中文版的题目才明白,是要找到 h,满足总共有 h 篇论文分别被引用了 ...

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

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

  10. 二分答案——H指数(Leetcode 274)

    题目选自Leetcode 274. H指数 二分查找(答案)的简单题~ 理解题意 这个例子有点儿特殊,论文被引用了 3 次,篇数有 3 篇.再来看一个更一般的例子: 结论: 这条分割线越靠左边,说明被 ...

最新文章

  1. python基础知识整理 第一节:入门记录(包含代码与执行结果)
  2. 【C++】C++11新增关键字详解
  3. maven 创建module失败 ,异常Unable to read parent POM
  4. 九. Python基础(9)--命名空间, 作用域
  5. java+mysql中文乱码问题
  6. SAP CRM WebClient UI,点击Master Data工作中心后执行的JavaScript代码
  7. Linux操作系统基础解析之(三)——基本命令行操作及获得帮助的方法
  8. 编码原则:意外情况的注释
  9. Linux下修改mysql密码以及忘记密码重置
  10. Modbus通用数据读取工具设计及使用
  11. 点击鼠标出现漂浮字体(自信, 自强, 坚持...)效果实现
  12. 593. 有效的正方形
  13. 2017年9月计算机二级office题库百度云,2017年9月计算机二级office题库
  14. 车辆碰撞起火事故的规律特点及常见起火原因 | 事故分析
  15. 计算机怎么看事件管理,用事件查看器查看电脑使用记录
  16. 台式计算机网线接口松动怎么办,台式电脑网卡坏了怎么修复(图文)
  17. sequence与sequencer
  18. 音视频开发系列-H264编码原理
  19. 秀米svg点击显示另一张图_公众号排版怎么做?点击图片出现另一张图片是怎么弄的?...
  20. [实用技巧] (转帖)关于MyDocument.exe -- 打印店病毒

热门文章

  1. db2 cmd命令操作
  2. 郭敏:什么是交通事件?如何做好交通事件管理以降低二次事故发生概率?
  3. 【读书笔记】设计模式第十一十二章收获
  4. 验证happenBefore
  5. Towards More Flexible and Accurate Object Tracking with Natural Language:Algorithms and Benchmark
  6. CImage::Loda 方法加载图片失败,因为vs2013中该方法不支持中文变量
  7. CryEngine技术讲解
  8. 微信公众号开发三 测试号申请
  9. 关于连接同一wifi,手机可以上网,电脑无法上网问题
  10. 【架构】1366- 如何画出一张优秀的架构图