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

LeetCode 275. H 指数 II

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目描述

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

h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)总共h 篇论文分别被引用了至少 h 次。

请你设计并实现对数时间复杂度的算法解决此问题。

样例1:

输入

citations = [0,1,3,5,6]

输出

3

样例2:

输入

citations = [1,2,100]

输出

2

Tag

二分

个人做法

个人用的是Acwing的二分法,特判了一下

class Solution {
public:int hIndex(vector<int>& citations) {int size = citations.size();int l = 0,r = size-1;while(l<r){int mid = (l+r)/2;if(citations[mid] >= size-mid ) r = mid;else l = mid+1;}if(l == r && citations[l] == 0) return 0; return size-l;}
};

官方做法

class Solution {
public:int hIndex(vector<int>& citations) {int size = citations.size();int l = 0,r = size-1;while(l<=r){int mid = (l+r)/2;if( citations[mid] >= (size-mid) ) r = mid-1;else l = mid+1;}return size-l;}
};

官方思路是把左区间放到满足条件的最小值处,右区间放到不满足条件的最大值处,且跳出循环必须是 l 严格大于 r ,因为最后结果是拿 l 算的,所以当l == r时,此时的 l 仅仅是不满足条件的最大值处

http://www.lryc.cn/news/211890.html

相关文章:

  • Android 优质的UI组件汇总
  • halcon roberts、 prewitt_amp、 sobel_amp、 edges_image、 laplace_of_gauss 对比
  • Vue2 跨域问题报错AxiosError net::ERR_FAILED、 Network Error、ERR_NETWORK
  • 第五章 I/O管理 四、I/O软件的层次结构
  • 云服务器安装Hbase
  • 黑豹程序员-架构师学习路线图-百科:PowerDesigner数据库建模的行业标准
  • Iterator 和 ListIterator 的区别(简要说明)
  • TypeScript - 函数 - 剩余参数
  • Python之前端
  • iOS iGameGuardian修改器检测方案
  • 显示一个文件夹下所有图片的直方图之和
  • 编程实例:操作简单的台球计时计费软件推荐,可以连接灯控硬件设备以及灯控器布线图编程
  • ThreadLocal 会出现内存泄漏吗?
  • Linux 下使用 Docker 安装 Redis
  • 协同网络入侵检测CIDS
  • (13)PC端自动化测试-C#微信接收消息并自动回复
  • 企业金蝶KIS软件服务器中了locked勒索病毒怎么办,勒索病毒解密
  • 2023年阿里云双11优惠来了,单笔最高可省2400元!
  • k8s资源调度
  • 【Netty专题】用Netty手写一个远程长连接通信框架
  • 注册商标被宣告为无效的5种情形
  • C#在类中申明成员数组变量的格式
  • 通俗易懂理解CNN卷积神经网络模型的参数量和计算量
  • npm工具使用方法介绍
  • 使用Python批量修改PPT字体和提取全部文字到word
  • Debezium系列之:在K8s集群中部署Debezium Operator运行Debezium Server的详细步骤
  • 并行和并发有什么区别?
  • 第2篇 机器学习基础 —(3)机器学习库之Scikit-Learn
  • 正点原子嵌入式linux驱动开发——Linux SPI驱动
  • 【计算机视觉】相机