稀碎从零算法笔记Day36-LeetCode:H指数

有点绕的一个题,题目描述的有点奇怪(可以看下英文?)

题型:数组、模拟

链接:274. H 指数 - 力扣(LeetCode)

来源:LeetCode

题目描述

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

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

感觉英文也好抽象……

题目样例

提示:

  • n == citations.length
  • 1 <= n <= 5000
  • 0 <= citations[i] <= 1000

题目思路

感觉这题难点:①什么是H指数 ②怎么求H指数

看这个题目描述也能感觉出来两个条件:①(某些)论文的数量为H ②(这些)论文的引用量均≥H——即在数组中的值大于H

那么问题就抽象为:求H,H要尽可能大。影响H的因素是citations[i] 的大小

然后是怎么求H指数:由于H指数跟数组元素的大小相关,那么数组排序之后问题就会简单很多

受定义影响,H肯定是< citations.size() 的,那么可以看一下排序后,citations[0]是否≥citations.size(),如果True的话,那么说明citations数组所有数值都比citations.size()——H的最大情况都要大。所以此时H就可以为citations.size()-0;同理,citations[1]如果≥citations.size()-1的话,也能求出H指数。

那如果是i呢?遍历到i,自然说明了i前面的数都不行。那么就要看citations[i] 和 citations.size()-i的大小关系了

因为是从左往右遍历,可能是H的值是不断变小的,所以一旦相等,势必是最大的H指数

C++代码

class Solution {
public:int hIndex(vector<int>& citations) {// 看评论区的模拟法int numH =0;//h指数sort(citations.begin(),citations.end());//论文按照升序排列;int len = citations.size();for(int i = 0;i < len ;i++){// 如果当前数值 比 后续元素的个数 大,那么i后面所有的数都比 这个个数 大,if(citations[i] >= len-i)return len -i;}// 遍历完了没找到,可能全为0return 0;}
};

结算页面

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

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

相关文章

SpringBoot登录校验(四)过滤器Filter

JWT令牌生成后&#xff0c;客户端发的请求头中会带有JWT令牌&#xff0c;服务端需要校验每个请求的令牌&#xff0c;如果在每个controller方法中添加校验模块&#xff0c;则十分复杂且冗余&#xff0c;所以引入统一拦截模块&#xff0c;将请求拦截下来并做校验&#xff0c;这块…

【算法】两数之和(暴力求解+哈希表)

本题来源---《两数之和》。 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里…

Golang | Leetcode Golang题解之第12题整数转罗马数字

题解&#xff1a; 题解&#xff1a; var (thousands []string{"", "M", "MM", "MMM"}hundreds []string{"", "C", "CC", "CCC", "CD", "D", "DC", "…

2024.3.31力扣每日一题——验证二叉树的前序序列化

2024.3.31 题目来源我的题解方法一 计数方法二 栈 题目来源 力扣每日一题&#xff1b;题序&#xff1a;331 我的题解 方法一 计数 当只有一个节点并且是空节点&#xff0c;则表示是空树&#xff0c;是一个正确的序列化正确的序列化节点数必然是偶数个&#xff0c;若不是偶数…

UNITY实战进阶-BatchRendererGroup+Jobs+Burst+RVO2+GPUAnimation 实现万人团战(一)

研究思路&#xff1a;GPUAnimation把动画放入GPU中处理&#xff0c;BatchRendererGroup进行动态批量渲染处理&#xff0c;JobsBurst进行多线程处理逻辑&#xff08;移动、攻击等&#xff09;&#xff0c;RVO2采用Jobs的寻路导航。 准备工作&#xff1a; Editor > Project S…

VMware虚拟机(Rocky9.3)硬盘扩容详细图文教程

参考<<鸟哥的Linux>>以及VMware虚拟机硬盘扩容详细图文教程 原因: 用户空间不足,且系统是用LVM&#xff08;logical volume manager&#xff09;进行分区 df -h #查看/home目录下磁盘容量不足磁盘扩容步骤 关闭虚拟机,选择编辑虚拟机, 点击硬盘,再点击扩容 这个…

Redis安装说明

Redis安装说明 大多数企业都是基于Linux服务器来部署项目&#xff0c;而且Redis官方也没有提供Windows版本的安装包。因此课程中我们会基于Linux系统来安装Redis. 此处选择的Linux版本为CentOS 7. Redis的官方网站地址&#xff1a;https://redis.io/ 1.单机安装Redis 1.1.…

Mysql底层原理十一:Mvcc

为什么要mvcc&#xff1f; 提高并发度&#xff0c;如果读和写都是通过加锁的方式&#xff0c;并发肯定上不来&#xff0c;通过mvcc来实现写通过加锁&#xff0c;读通过mvcc readView机制 3.9.1 Undo版本链 再重复一遍&#xff0c;页面中的记录存放在用户表空间的数据页中&a…

VLAN 与 VXLAN:一个字母之差,到底两者有什么区别?

来源&#xff1a;网络技术联盟站 网络虚拟化技术在现代网络架构中扮演着至关重要的角色&#xff0c;而其中的两个重要代表——虚拟局域网&#xff08;VLAN&#xff09;和虚拟扩展局域网&#xff08;VXLAN&#xff09;——在网络管理和扩展性方面发挥着独特的作用。本文将深入研…

加拿大公司注册好处 注册加拿大公司条件 注册加拿大公司流程

一、加拿大公司注册优势 1、开办成本低&#xff1a;加拿大的注册费用相对较低&#xff0c;注册一家公司所需资金较少。 2、法律保护完善&#xff1a;加拿大的法律体系健全&#xff0c;对企业的合法权益给予充分保护。 3、政 府扶持政策&#xff1a;加拿大政 府鼓励企业创新发…

LeetCode-1483. 树节点的第 K 个祖先【树 深度优先搜索 广度优先搜索 设计 二分查找 动态规划】

LeetCode-1483. 树节点的第 K 个祖先【树 深度优先搜索 广度优先搜索 设计 二分查找 动态规划】 题目描述&#xff1a;解题思路一&#xff1a;暴力解法会超时&#xff01;【一级一级往上跳&#xff0c;效率太低】解题思路二&#xff1a;倍增&#xff0c;利用二进制运算&#xf…

深入理解Android中的startActivity过程

文章目录 1. 发起startActivity请求2. 处理startActivity请求3. 创建目标Activity的进程4. 实例化目标Activity5. 显示目标Activity6. 处理Activity切换动画7. 处理返回结果8. 处理异常 Android操作系统中的Activity是应用程序的基本组成单元&#xff0c;负责与用户进行交互。当…

gin框架提高篇(三)

多服务器程序运行 package mainimport ("fmt""github.com/gin-gonic/gin""golang.org/x/sync/errgroup""net/http""time" )var g errgroup.Group // 使用 errgroup.Group 来并发启动这两个服务器func main() {// 服务器1se…

穿越代码之海:探寻结构体深层逻辑,展望未来应用新天地

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 结构体作为一种数据结构&#xff0c;其定义和特点决定了它在各种应用中的广泛适用性。随着科技的进步和新兴行业的不断涌现&#xf…

HarmonyOS 应用开发之wrapBuilder:封装全局@Builder

全局Builder作为wrapBuilder的参数返回WrappedBuilder对象&#xff0c;实现 全局Builder 可以进行赋值和传递。 说明&#xff1a; 从API version 11开始使用。 接口说明 wrapBuilder是一个模板函数&#xff0c;返回一个WrappedBuilder对象。 declare function wrapBuilder<…

机器学习数据预处理—统计分析方法

数据预处理 1 数据规范化 量纲&#xff0c;指将一个物理导出量用若干基本量的乘方之积表示出来的表达式。数据的比较需要关注两点——绝对数值和量纲&#xff0c;而特征间因为量纲的存在导致无法直接通过绝对数值比较大小&#xff0c;也就无法判断特征间的重要性。例如若某个…

算法:树形dp(树状dp)

文章目录 一、树形DP的概念1.基本概念2.解题步骤3.树形DP数据结构 二、典型例题1.LeetCode&#xff1a;337. 打家劫舍 III1.1、定义状态转移方程1.2、参考代码 2.ACWing&#xff1a;285. 没有上司的舞会1.1、定义状态转移方程1.2、拓扑排序参考代码1.3、dfs后序遍历参考代码 一…

刷题之Leetcode209题(超级详细)

209.长度最小的子数组 力扣题目链接(opens new window)https://leetcode.cn/problems/minimum-size-subarray-sum/ 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组&#xff0c;并返回其长度。如果不存在符合条…

0074__windows日志捕获工具-DebugView使用教程

windows日志捕获工具-DebugView使用教程-CSDN博客

数据可视化高级技术Echarts(快速上手柱状图进阶操作)

目录 1.Echarts的配置 2.程序的编码 3.柱状图的实现&#xff08;入门实现&#xff09; 相关属性介绍&#xff08;进阶&#xff09;&#xff1a; 1.标记最大值/最小值 2.标记平均值 3.柱的宽度 4. 横向柱状图 5.colorBy series系列&#xff08;需要构造多组数据才能实现…