【二分查找】275. H 指数 II

📍前言

🕺作者: 迷茫的启明星

学习路线
C语言从0到1
C++初阶
数据结构从0到1

😘欢迎关注:👍点赞🙌收藏✍️留言

🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

持续更新中~

【二分查找】275. H 指数 II

在另一篇博客里讲过二分法的模板:
《二分法的模板讲解》

问题描述

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

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

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

示例

示例 1:

输入:citations = [0,1,3,5,6]

输出:3

解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 0, 1, 3, 5, 6 次。

由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3 。

解题思路

本题要求求解 h 指数,可以使用二分查找算法。首先,我们需要找到一个合适的中间点 mid。然后,我们判断 citations[mid] 是否满足 citations[mid] >= citations.size() - mid。如果满足,说明在 mid 左侧可能有更多的论文满足 h 指数的定义,因此将 l 设置为 mid;否则,将 r 设置为 mid

二分查找的复杂度为 O(log n),因此整个算法的复杂度也是 O(log n)。

代码实现

以下是基于二分查找的解决方案,时间复杂度为 O(log n)。

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

总结

本文描述了一种基于二分查找的解决方案,用于求解给定整数数组 citations 的 h 指数。这种解决方案的时间复杂度为 O(log n),能够有效地解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模拟退火算法

先随机产生初始点&#xff0c;并获得函数值。接着循环随机产生定义域内的数&#xff0c;比较与现在所处的点的函数值大小&#xff0c;&#xff08;以求最大值为例&#xff09;若大于现在所处的点&#xff0c;那么就接受这个点。若小于这个点的值&#xff0c;不一定拒绝&#xf…

windows下安装consul、springboot整合consul

Spring Cloud Consul通过自动配置和绑定到Spring Environment和其他Spring编程模型习语&#xff0c;为Spring Boot应用程序提供Consul集成。通过一些简单的注解&#xff0c;可以快速启用和配置应用程序内的常用模式&#xff0c;并使用Hashicorp的Consul构建大型分布式系统。提供…

检测到错误页面web应用服务器版本信息泄露

详细描述 Web服务器未能正确处理异常请求导致Web服务器版本信息泄露&#xff0c;攻击者收集到服务器信息后可进行进一步针对性攻击。 解决办法 临时修复建议如下&#xff1a; 1、关闭web服务器错误提示。 2、关闭运行平台的错误提示。 3、建立错误机制&#xff0c;不要把真实…

Docker 的理解

docker 启停 秒级别&#xff0c;应用的处理。docker 如何快速启停&#xff0c;键值对&#xff0c;缓存&#xff0c;数据库。 hello redis web 反向代理 1 docker ps 查看进程 2 docker images 查看镜像 3 docker run hello-world 「先尝试从本地查找&#xff0c;本地没有&…

uniapp u-view 两个时间戳的差 倒计时

参考uView倒计时 1、常规操作&#xff1a;自定义倒计时组件 ui-count-down <template><view class"countdown-view"><u-count-down change"finishDown" :time"startTimeDown" :startTime"startTime" format"HH:…

MySQL八股学习总览-from 小林coding

MySQL八股学习总览-from 小林coding MySql执行流程连接MySQL服务器查询缓存解析SQL执行SQL预处理器优化器执行器 MySql执行流程 连接MySQL服务器 经过如下的命令,就可以与MySQL服务器建立起连接,三次握手 mysql -h$ip -u$user -p服务端查询多少个客户端连接 show processlis…

干货分享:商城系统开发方式

商城系统是一种为了满足电子商务需求而开发的系统&#xff0c;它能够实现在线购物、支付、订单管理等功能。在当今互联网时代&#xff0c;商城系统的开发方式多种多样。那么&#xff0c;商城系统开发方式有哪些呢&#xff1f; 1、完全独立自主开发 完全独立自主开发是指企业根…

【C++】仿函数(less)

C中的仿函数 class Solution { public:struct cmp{bool operator()(const pair<string,int>&kv1,const pair<string,int>&kv2){if(kv1.second<kv2.second) return true;if(kv1.secondkv2.second&&kv1.first>kv2.first) return true;return …

TCP/IP详解

目录 一、OSI参考模型 1.图示 2.OSI七层模型各自作用 3.七层通信过程 二、IP协议 1.IPv4首部 2.IPv6首部 三、TCP协议 1.tcp首部格式 2.握手挥手图示 3.握手流程 4.为什么要三次握手&#xff1f; 5.四次挥手流程 6.为什么要四次分手&#xff1f; 7.为什么要等待…

后端Long类型传到前端精度丢失的问题

问题出现&#xff1a;后端的Java Bean的id属性是用的Long类型对应数据库主键使用bigint类型&#xff0c;当使用JSON方式传递该数据给前端时&#xff0c;前端接收到的数据末尾会变成0。&#xff08;发生的精度丢失问题&#xff09; 问题原因&#xff1a;Java中的long能表示的范围…

数据排布与跨距对齐

1 数据排布 1.1 数据排布的概念 在深度学习框架中&#xff0c;特征图通常以四维数组的形式呈现&#xff0c;这四个维度分别是&#xff1a;批量大小N&#xff0c;特征图通道数C&#xff0c;特征图高度H&#xff0c;特征图宽度W。数据排布&#xff08;Layout&#xff09;指的就…

http1.0、http1.1 http 2.0

HTTP/1.0是无状态、无连接的应用层协议。 无连接 无连接&#xff1a;每次请求都要建立连接&#xff0c;需要使用 keep-alive 参数建立长连接、HTTP1.1默认长连接keep-alive   无法复用连接&#xff0c;每次发送请求都要进行TCP连接&#xff0c;TCP的连接释放都比较费事&…

【优选算法题练习】day6

文章目录 一、76. 最小覆盖子串1.题目简介2.解题思路3.代码4.运行结果 二、704. 二分查找1.题目简介2.解题思路3.代码4.运行结果 三、34. 在排序数组中查找元素的第一个和最后一个位置1.题目简介2.解题思路3.代码4.运行结果 总结 一、76. 最小覆盖子串 1.题目简介 76. 最小覆…

php中多线程编程学习

class Request extends Thread { public $url; public $response; public function __construct($url) { $this->url $url; } public function run() { $this->response file_get_contents($this->url); } } 线程(thread)…

魔术之舞:用Python编织无懈可击的WebUI自动化测试奇迹

文末附有精心准备的WebUI自动化测试30道面试题链接~ 一、引言 A. 引入WebUI自动化测试的重要性和挑战 Web应用程序的快速发展和普及使得Web用户界面&#xff08;WebUI&#xff09;自动化测试变得异常重要。随着Web应用程序的复杂性和功能需求的增加&#xff0c;传统的手动测试…

使用python中的SVM进行数据回归预测

在Python中使用支持向量机&#xff08;SVM&#xff09;进行数据回归预测&#xff0c;你可以遵循以下步骤&#xff1a; 导入必要的库&#xff1a; from sklearn.svm import SVR from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squar…

2023秋招,网络安全面试题

Hello&#xff0c;各位小伙伴&#xff0c;我作为一名网络安全工程师曾经在秋招中斩获&#x1f51f;个offer&#x1f33c;&#xff0c;并在国内知名互联网公司任职过的职场老油条&#xff0c;希望可以将我的面试的网络安全大厂面试题和好运分享给大家~ 转眼2023年秋招已经到了金…

04.MySQL——用户管理

用户管理 用户管理的价值 用户 用户信息 MySQL中的用户&#xff0c;都存储在系统数据库mysql的user表中 use mysql;select host,user,authentication_string from user;host&#xff1a; 表示这个用户可以从哪个主机登陆&#xff0c;如果是localhost&#xff0c;表示只能从…

Qt 获得QTableview所选中的行的某一列数据

1、点击QtableView控件-》右键-》跳到槽-》选择 2、编写槽函数信息 void XXX::on_tableView_CalTable_clicked(const QModelIndex &index) {int rowindex.row();//获得当前行索引int colindex.column();//获得当前列索引QModelIndex index1 CalViewModel->index(row,2)…

Enterprise:通过 App search 摄入数据

App Search 是 Elastic Enterprise Search 的一部分&#xff0c;Elastic Enterprise Search 是由 Elasticsearch 提供支持的内容搜索工具集合。 最初由 App Search 引入的一些功能&#xff08;例如网络爬虫&#xff09;现在可以直接通过企业搜索使用。 将这些功能与其他企业搜…