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

Leetcode.274 H 指数

题目链接

Leetcode.274 H 指数 mid

题目描述

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

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

示例 1:

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

示例 2:

输入:citations = [1,3,1]
输出:1

提示:
  • n = c i t a t i o n s . l e n g t h n = citations.length n=citations.length
  • 1 ≤ n ≤ 5000 1 \leq n \leq 5000 1n5000
  • 0 ≤ c i t a t i o n s [ i ] ≤ 1000 0 \leq citations[i] \leq 1000 0citations[i]1000

解法:二分

我们定义 c h e c k ( k ) check(k) check(k),表示 c i t a t i o n s citations citations 至少存在 k k k 篇论文被引用超过 k k k 次,即 c i t a t i o n s citations citations 是否满足 k k k 指数

我们采用 二分 解决,初始时 :

l = 0 , r = n l = 0 , r = n l=0,r=n

m i d = ( l + r ) / 2 mid = (l + r) / 2 mid=(l+r)/2

如果 c h e c k ( m i d ) check(mid) check(mid) 成立,即满足 m i d mid mid 指数,说明 m i d mid mid 可能就是答案,即 l = m i d l = mid l=mid

否则,不满足 m i d mid mid 指数,说明 m i d mid mid 太大了,故 r = m i d − 1 r = mid - 1 r=mid1

时间复杂度: O ( n × l o g n ) O(n \times logn) O(n×logn)

C++代码:

class Solution {
public:int hIndex(vector<int>& citations) {int n = citations.size();int l = 0 , r = n;auto check = [&](int k) ->int{int cnt = 0;for(auto x:citations){if(x >= k) cnt++;}return cnt >= k;};while(l < r){int mid = (l + r + 1) >> 1;if(check(mid)) l = mid;else r = mid - 1;}return l;}
};

相关文章:

Leetcode.274 H 指数

题目链接 Leetcode.274 H 指数 mid 题目描述 给你一个整数数组 c i t a t i o n s citations citations &#xff0c;其中 c i t a t i o n s [ i ] citations[i] citations[i] 表示研究者的第 i i i 篇论文被引用的次数。计算并返回该研究者的 h h h 指数。 根据维基百科…...

订单BOM放哪儿?(我的APS项目二)

供应商的小伙伴带来了一个全新的架构&#xff0c;在服务器提供的服务中&#xff0c;有一个对象模型服务&#xff0c;就是数据内存对象&#xff1b;这个方式确实是我在其它架构中没有见到过的。可惜&#xff0c;最初的版本&#xff0c;我们的订单BOM被设计到放在内存对象中。我对…...

从0到1之微信小程序快速入门(03)

目录 什么是生命周期函数 WXS脚本 ​编辑 与 JavaScript 不同 纯数据字段 组件生命周期 定义生命周期方法 代码示例 组件所在页面的生命周期 代码示例 插槽 什么是插槽 启用多插槽 ​编辑 定义多插槽 组件通信 组件间通信 监听事件 触发事件 获取组件实例 自…...

【面试高高手】—— docker面试题

文章目录 1. 什么是Docker&#xff1f;它有什么作用&#xff1f;2.Docker容器和虚拟机之间有什么区别&#xff1f;3.如何创建一个Docker容器&#xff1f;4.Docker镜像和容器的区别是什么&#xff1f;5.什么是Dockerfile?能够详细说明下吗&#xff1f;6.什么是Docker Compose&a…...

mac电脑怎么永久性彻底删除文件?

Mac老用户都知道在我们查看Mac内存时都会发现有一条“其他文件”占比非常高&#xff0c;它是Mac储存空间中的“其他”数据包含不可移除的移动资源&#xff0c;如&#xff0c;Siri 语音、字体、词典、钥匙串和 CloudKit 数据库、系统无法删除缓存的文件等。这些“其他文件”无用…...

MySQL(2):环境搭建

1.软件下载 软装去官网下载&#xff08;社区版&#xff09;&#xff1a;https://downloads.mysql.com/archives/installer/&#xff08;历史版本可选&#xff09; 选择下面的&#xff0c;一步到位 2.软件安装 双击 .msi 文件 选完 Custom 自定义后点 next 按 1&#xff0c…...

Android平台GB28181执法记录仪技术方案

技术背景 我们在做Android平台GB28181设备接入模块的时候&#xff0c;对接过好多开发者&#xff0c;他们都是用于执法记录仪场景&#xff0c;执法记录仪是一种便携式设备&#xff0c;用于记录执法人员的行动和接触情况&#xff0c;通过实时回传音视频数据和实时位置信息给指挥…...

【已解决】VSCode运行C#控制台乱码显示

问题描述 如上图所示&#xff0c;最近在学习C#突然发现我在运行Hello World的时候出现这样的乱码情况。 分析原因 主要是因为VS Code 是UTF-8的编码格式&#xff0c;而我们的PC是Unicode编码&#xff0c;所以我们需要对其进行一个统一即可解决问题。那么知道这个的问题那就开…...

MySQL扩展语句和约束条件

MySQL扩展语句 create TABLE if not exists ky32 (id int(4) zerofill primary key auto_inc rement&#xff0c; #表示该字段可以自增长&#xff0c;默认从1开始每条记录会自动递增1name varchar(10) not null,cradid int(10) not null unique key,hobby varchar (50))&#x…...

Java排序学习

int[] 数组排序 升序排序&#xff1a; Arrays.sort(num);降序排序&#xff1a; num IntStream.of(num) // 变为 IntStream.boxed() // 变为 Stream<Integer>.sorted(Comparator.reverseOrder()) // 按自然序相反排序.mapToInt(Integer::intValue) …...

《2023中国社交媒体平台指南》丨附下载_三叠云

✦ ✦✦ ✦✦ ✦✦ ✦ KAWO发布的《2023中国社交媒体平台指南》&#xff0c;对中国社交媒发展情况、八大社交媒体平台做出详细分析&#xff0c;为营销人员提供了布局社交媒体的实操性指南。 社交媒体八大趋势&#xff1a; 1.社交媒体搜索引擎化 除了社交媒体上发表的内容会被…...

【unity小技巧】unity排序问题的探究

文章目录 前言一、排序图层二、sorting Group的使用三、树木排序设计方法一 代码控制方法二 拆分图片方法三 透视排序1. 普通物品排序2. TileMap瓦片排序设计 完结 前言 unity的排序问题其实之前分享的项目多多少少都有提到一点&#xff0c;但是没有单独拿出来说&#xff0c;所…...

为什么会被【禅道】工具的公司提出QQ群的反思…………

周末备份Gitlab的代码库&#xff0c;把Gitlab更新到了最新的16.5。顺带看了禅道官网出了最新版本18.8。但是禅道的升级更新并不顺利…………。 先说一下为什么用禅道这个工具&#xff1a; 再使用禅道这个工具前&#xff0c;使用过的工具有QC(Quality Center)、jira&#xff0…...

专业课改革,难度陡然提高,专业课122总分390+南京理工大学818南理工818上岸经验分享

今年专业课相对较难&#xff0c;分数122&#xff0c;基本达到预期。南理工818是信号和数电两门课&#xff0c;各站一半。复试时间数电可能要更多一点&#xff0c;也比信号难拿分。今年专业课难度很大&#xff0c;基本超过不少985学校&#xff0c;大家要重视。 有条件的同学建议…...

Java入门与实践

Java基础 Java入门 idea的使用 idea快捷键 crtlaltt 对选中的代码弹出环绕选项弹出层 问题描述&#xff1a;idea光标变小黑块 解决&#xff1a;误触Insert键&#xff0c;再次按Insert键即可 java基础语法 注释 //单行注释/* 多行注释 *//** 文档注释&#xff0c;可提取到…...

TensorRT量化实战课YOLOv7量化:pytorch_quantization介绍

目录 前言1. 课程介绍2. pytorch_quantization2.1 initialize函数2.2 tensor_quant模块2.3 TensorQuantizer类2.4 QuantDescriptor类2.5 calib模块 总结 前言 手写 AI 推出的全新 TensorRT 模型量化实战课程&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考。 该…...

【23真题】知识点覆盖全!有罕见判断题!

今天分享的是23年烟台大学833的信号与系统试题及解析。 本套试卷难度分析&#xff1a;本套试题内容难度中等偏下&#xff0c;题目难度不大&#xff0c;但是题量较多&#xff0c;考察的知识点全面&#xff0c;比较多的考察了对信号波形以及频谱图的画法&#xff0c;值得注意的是…...

K8s外部网络访问之Ingress

K8s外部网络访问之Ingress 1 简介2 安装ingress-nginx-controller2.1 下载ingress部署文件2.2 修改deploy.yaml文件参数2.2.1 修改镜像源2.2.2 修改部分参数2.2.3 部署ingress-nginx2.2.4 查看部署结果3.ingress-nginx应用3.1 制作镜像3.2 配置TLS secret3.2.1 创建HTTPS证书3.…...

中文编程工具免费版下载,中文开发语言工具免费版下载

中文编程工具免费版下载&#xff0c;中文开发语言工具免费版下载 中文编程工具开发的实际部分案例如下图 编程系统化课程总目录及明细&#xff0c;点击进入了解详情。 https://blog.csdn.net/qq_29129627/article/details/134073098?spm1001.2014.3001.5502...

昂首资本严肃且专业地探讨波浪理论第一波

很多投资者已经了解了波浪理论第一波&#xff0c;今天昂首资本和各位投资者再加深一下理解&#xff0c;让我们严肃且专业地探讨一下第一波。 以小时价格图表举例&#xff0c;第一波的起始点存在一个看涨反转棒。请注意&#xff0c;这个棒形结构对应了比尔威廉姆斯交易策略三智…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...