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

Python每日一练---第九天:H指数

前言📢📢

Python每日一练来啦,本文已收录于:《Python每日一练》专栏

此专栏目的在于,帮忙学习Python的小白提高编程能力,训练逻辑思维,持续更新中,欢迎免费订阅!!!

  • 1. 问题描述

给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 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 == citations.length

  • 1 <= n <= 5000

  • 0 <= citations[i] <= 1000

  • 2. 问题分析

H指数的定义是:一个研究者有h篇论文,每篇至少被引用n次,并且剩下的论文被引用次数不超过h次。

换句话说,就是找数组中,有n个数大于n。

  • 3. 算法思路

对于每个候选的 h 值:

(1)计算允许的"低引用"论文数leftMaxCount = n - h

  • 因为至少要有 h 篇论文引用次数 ≥ h,所以最多只能有 n-h 篇论文引用次数 < h

(2)统计实际"低引用"论文数:遍历数组,统计引用次数 < h 的论文数量

(3)验证条件:如果实际低引用论文数 ≤ 允许的低引用论文数,说明满足 h 指数条件

  • 4. 代码实现

from typing import Listclass Solution:def hIndex(self, citations: List[int]) -> int:n = len(citations)maxN = n  # h指数最大可能值是n(论文总数)# 从最大可能的h值n开始,递减到1for max in range(maxN, 0, -1):leftMaxCount = n - max  # 允许引用次数小于h的论文数量count = 0  # 统计实际引用次数小于h的论文数量# 遍历所有论文for i in range(n):if citations[i] < max:count += 1  # 统计引用次数小于h的论文# 如果已经超过允许的数量,提前退出if count > leftMaxCount:break# 检查是否满足条件if count <= leftMaxCount:return max  # 找到最大的h值return 0  # 如果没有找到,返回0if __name__ == '__main__':print(Solution().hIndex([3,0,6,1,5]))print(Solution().hIndex([1,3,1]))print(Solution().hIndex([0]))

http://www.dtcms.com/a/581374.html

相关文章:

  • go中es(olivere/elastic/v7)增加日志
  • css之动画
  • 域名费用和网站服务器费用是同样的吗解析软件的网站
  • 【C++】现代C++的新特性constexpr,及其在C++14、C++17、C++20中的进化
  • 求制作网站音乐网站建设规划
  • 免费响应式模板网站网站换空间要重新备案吗
  • 【Rust】时间轮的数据结构于设计模式
  • 解决cryptography库报错【DLL load failed while importing _rust】
  • JASP:一款免费开源的统计软件,SPSS替代产品
  • 【JS Utils】Vue2 自定义计算属性 (兼容 uniapp 和 Vue 2.7 以前版本)
  • React 16
  • 东莞网站建设技术支持南京网站建设 零云建站
  • wordpress通知站点360搜索品牌建设与管理提案
  • Python实现手写数字识别
  • 零成本体验云计算!阿贝云免费服务器深度测评
  • 如何在Mac上同步iPhone短信
  • 网站建设好后有些什么资料软件工程月薪一般多少
  • Fastapi 进阶一:Fastapi依赖注入机制详解
  • Java实用面试经验:接口编程概念与技巧总结
  • 在VMWare上搭建Flume集群
  • vue_day04
  • 深入浅出 SPA/MPA
  • 怎么增加网站的关键词库个人网站申请空间
  • (已发25年8月华为云、51CTO)数组编程:编程的基础数据结构!
  • 北京网站制作设计哪个公司好网站开发人员结构配比
  • 面对未来:企业决策与适应力
  • bat 批处理实现 FFmpeg 命令压缩 MP4
  • openEuler 云原生实战:部署高性能 Redis 集群与压测分析
  • 机器学习-逻辑回归与二分类
  • 老玩家流失?基于数据驱动的游戏用户流失分析与干预策略