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

【每日一题Day363】LC275H 指数Ⅱ | 二分答案

H 指数Ⅱ【LC275】

给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。
h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)总共有 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调试技巧——使用Python 自定义LLDB
  • Cannot connect to the Docker
  • Linux网卡
  • 如何防范AI诈骗:从了解到保护
  • 【MySQL】C语言连接数据库
  • 分类预测 | Matlab实现KOA-CNN-BiGRU-selfAttention多特征分类预测(自注意力机制)
  • Scala基本数据类型和运算符
  • 【计算机网络】浏览器的通信能力
  • dbeaver配置es连接org.elasticsearch.xpack.sql.jdbc.EsDriver
  • C++(20):constexpr函数中可以成对的使用new/delete
  • Lua脚本语言
  • GPT实战系列-如何用自己数据微调ChatGLM2模型训练
  • 图片去除水印文字怎么去除?这几个方法快来收藏
  • redis加入window服务及删除
  • HTML常用标签、CSS基础
  • 收藏网友的 源程序下载网
  • $translatePartialLoader加载失败及解决方式
  • android 一些 utils
  • input实现文字超出省略号功能
  • Material Design
  • Mithril.js 入门介绍
  • ReactNativeweexDeviceOne对比
  • REST架构的思考
  • webpack入门学习手记(二)
  • 从0到1:PostCSS 插件开发最佳实践
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 深度学习入门:10门免费线上课程推荐
  • 第二十章:异步和文件I/O.(二十三)
  • ​Spring Boot 分片上传文件
  • # .NET Framework中使用命名管道进行进程间通信
  • #etcd#安装时出错
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四)汇编语言——简单程序
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net 使用ajax控件后如何调用前端脚本
  • .Net面试题4
  • .NET委托:一个关于C#的睡前故事
  • .net中调用windows performance记录性能信息
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @RunWith注解作用
  • @Service注解让spring找到你的Service bean
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [C++] 统计程序耗时
  • [C++]C++基础知识概述
  • [CC2642R1][VSCODE+Embedded IDE+IAR Build+Cortex-Debug] TI CC2642R1基于VsCode的开发环境
  • [C语言]一维数组二维数组的大小