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

【每日一题Day362】LC274H 指数 | 二分答案

H 指数【LC274】

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

根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且每篇论文 至少 被引用 h 次。如果 h 有多种可能的值,h 指数 是其中最大的那个。

来晚了 奔波的一天

  • 思路

    • 二段性:存在最大值y使,少于等于y的数值一定满足条件;大于y的数值一定不满足条件
    • 二分答案y
      • 引用次数大于等于y的论文数目大于等于y,那么向右搜索获得更大的y
      • 引用次数大于等于y的论文数目小于y,那么向左搜索获得更大的y
    • check:排序后可以快速算出引用次数大于等于y的论文数目
  • 实现

    class Solution {public int hIndex(int[] citations) {int n = citations.length;Arrays.sort(citations);int l = 1, r = n;int res = 0;while (l <= r){int mid =(l + r) >> 1;if (check(citations, mid) >= mid){res = Math.max(res, mid);l = mid + 1;            }else{r = mid - 1;}}return res;}public int check(int[] citations, int target){int n = citations.length;int l = 0, r = n - 1;while (l <= r){int mid = l + r >> 1;if (citations[mid] < target){l = mid + 1;}else{r = mid - 1;}}// l为第一个符合的下标return n - l;// 大于等于target的引用次数的数目}
    }
    
    • 复杂度
      • 时间复杂度: O ( n l o g m ) O(nlogm) O(nlogm) n n n是数组的长度,m是二分查找的上界。二分查找的时间复杂度是 O ( l o g m ) O(logm) O(logm),每次判断需要的时间复杂度为 O ( n ) O(n) O(n)
      • 空间复杂度: O ( log ⁡ n ) O(\log n) O(logn)

相关文章:

  • iOS_Crash 四:的捕获和防护
  • es之null_value
  • Python——自动创建文件夹
  • 一个基于Excel模板快速生成Excel文档的小工具
  • 23种设计模式(10)——门面模式
  • 在Go中处理时间数据
  • Knife4j使用教程(一) -- 在不同版本SpringBoot,选用不同的Knife4j相关的jar包
  • Linux系统之file命令的基本使用
  • Google单元测试sample分析(一)
  • elementUI 特定分辨率(如1920*1080)下el-row未超出一行却换行
  • Python深度学习实战-基于tensorflow原生代码搭建BP神经网络实现分类任务(附源码和实现效果)
  • Python:实现日历到excel文档
  • html5怎么实现语音搜索
  • SOLIDWORKS PDM 2024数据管理5大新功能
  • 制作自己的前端组件库并上传到npm上
  • JS 中的深拷贝与浅拷贝
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • Centos6.8 使用rpm安装mysql5.7
  • docker python 配置
  • Hibernate最全面试题
  • Javascript编码规范
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Js基础知识(一) - 变量
  • Laravel核心解读--Facades
  • Linux下的乱码问题
  • nfs客户端进程变D,延伸linux的lock
  • Puppeteer:浏览器控制器
  • Python - 闭包Closure
  • python3 使用 asyncio 代替线程
  • Python连接Oracle
  • Vue实战(四)登录/注册页的实现
  • 对象管理器(defineProperty)学习笔记
  • 复习Javascript专题(四):js中的深浅拷贝
  • 后端_MYSQL
  • 基于HAProxy的高性能缓存服务器nuster
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 解析 Webpack中import、require、按需加载的执行过程
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微信开放平台全网发布【失败】的几点排查方法
  • 详解移动APP与web APP的区别
  • 小程序button引导用户授权
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​一些不规范的GTID使用场景
  • #NOIP 2014# day.1 T2 联合权值
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (7)STL算法之交换赋值
  • (done) 两个矩阵 “相似” 是什么意思?
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)