【LeetCode每日一题】——274.H指数

news2024/9/20 22:36:54

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 排序

二【题目难度】

  • 中等

三【题目编号】

  • 274.H指数

四【题目描述】

  • 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 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 <= n <= 5000 1<=n<=5000
  • 0 < = c i t a t i o n s [ i ] < = 1000 0 <= citations[i] <= 1000 0<=citations[i]<=1000

七【解题思路】

  • 首先对数组从大到小排序
  • 因为我们要求H指数的最大值,所以从后向前遍历,因为已经排序,数组越往后面值越大
  • 初始化定义H指数为0,因为此时还没开始遍历,就说明还没有论文,也没有引用量
  • 然后如果数组的当前值大于H指数,说明已找到了“一篇文章”的引用量大于H指数,那么就让H指数增加一
  • 遍历完成数组后,返回结果即可

八【时间频度】

  • 时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn) n n n为传入的数组的长度
  • 空间复杂度: O ( l o g n ) O(logn) O(logn) n n n为传入的数组的长度

九【代码实现】

  1. Java语言版
class Solution {
    public int hIndex(int[] citations) {
        Arrays.sort(citations);
        int h = 0;
        int n = citations.length - 1;
        for(int i = n; i >= 0 && citations[i] > h;i--){
            h++;
        }
        return h;
    }
}
  1. C语言版
int compare(const void *a, const void *b)
{
    return *(int *)a - *(int *)b;
}

int hIndex(int* citations, int citationsSize)
{
    qsort(citations, citationsSize, sizeof(int), compare);
    int h = 0;
    int n = citationsSize - 1;
    for(int i = n;i >= 0 && citations[i] > h;i--)
    {
        h++;
    }
    return h;
}
  1. Python语言版
class Solution:
    def hIndex(self, citations: List[int]) -> int:
        citations.sort()
        h = 0
        i = len(citations) - 1
        while i >= 0 and citations[i] > h:
            h += 1
            i -= 1
        return h
  1. C++语言版
class Solution {
public:
    int hIndex(vector<int>& citations) {
        sort(citations.begin(), citations.end());
        int h = 0;
        int n = citations.size() - 1;
        for(int i = n; i >= 0 && citations[i] > h;i--){
            h++;
        }
        return h;
    }
};

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

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

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

相关文章

ReID网络:MGN网络(3) - 数据组织

1. 概述 首先ReID不仅仅可以搞行人&#xff0c;当然也可以处理其他目标&#xff0c;这个是大家需要领会的一点。 用于ReID的行人数据集&#xff0c;一般是有多段同一目标在不同时间的采样序列组成。例如同一个行人&#xff0c;间隔5秒采集一张图像&#xff0c;连续采集30张。…

Swift 中的动态成员查找

文章目录 前言基础介绍基础示例1. 定义一个动态成员访问类&#xff1a;2. 访问嵌套动态成员&#xff1a; 使用 KeyPath 的编译时安全性KeyPath 用法示例KeyPath 进阶使用示例1. 动态访问属性&#xff1a;2. 结合可选属性和 KeyPath&#xff1a;3. 动态 KeyPath 和字典&#xff…

使用calc()调整元素高度或宽度

<style>.parent { display: flex;padding: 0px 5px;width: 600px;height: 200px;background: #ccc;}.children { margin: 10px 10px;/* 减去padding和margin */height: calc(100% - 20px);width: calc(100% - 30px);background: skyblue;}</style><div class&qu…

嵌入式Linux开发实操(十四):SPI接口开发

# 前言 SPI(Serial Peripheral Interface)同UART、I2C、CAN等一样,是MCU/SOC的重要接口,没错,它是个通讯接口,一个串行通讯接口,我们想到了四线接口(CS、CLK、MOSI、MISO) 可以通过CS(ChipSelect)或者SS (Slave Select)线来选择和哪个SPI设备通信,选择就是把这条线…

无涯教程-Android - Linear Layout函数

Android LinearLayout是一个视图组&#xff0c;该视图组将垂直或水平的所有子级对齐。 Linear Layout - 属性 以下是LinearLayout特有的重要属性- Sr.NoAttribute & 描述1 android:id 这是唯一标识布局的ID。 2 android:baselineAligned 此值必须是布尔值&#xff0c;为…

Java中ArrayList.remove(index)漏删的问题

问题描述 ArrayList中数据删除漏删 测试代码如下 public static void main(String[] args) {List<Integer> list new ArrayList<>();for(int i0;i<10;i){list.add(i1);}System.out.println("删除前&#xff1a;list.szie() "list.size());for(i…

什么是跨域问题 ?Spring MVC 如何解决跨域问题 ?

1. 什么是跨域问题 &#xff1f; 跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。 跨域问题的 3 种情况&#xff1a; 1. 协议不同&#xff0c;例如 http 和 https&#xff1b; http://127.0.0.1:8080https://127.0.0.1:8080 2. 域名不同&#xff1…

在springboot项目中显示Services面板的方法

文章目录 前言方法一&#xff1a;Alt8快捷键方法二&#xff1a;使用Component标签总结 前言 在一个springboot项目中&#xff0c;通过开启Services面板&#xff0c;可以快速的启动、配置、管理多个子项目。 方法一&#xff1a;Alt8快捷键 1、在idea界面输入Alt8&#xff0c;在…

非科班菜鸡算法学习记录 | 代码随想录算法训练营第50天|| 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

123. 买卖股票的最佳时机III 123. Best Time to Buy and Sell Stock III(英文力扣连接) 知识点&#xff1a;动规 状态&#xff1a;看思路ok 思路&#xff1a; 跟之前股票思路一样&#xff0c;多定义几个状态&#xff0c;此题要买两次&#xff0c;所以算上不操作一共有五个状态…

软件测试案例 | 气象探测库存管理系统的集成测试计划

将经过单元测试的模块按照设计要求连接起来&#xff0c;组成规定的软件系统的过程被称为“集成”。集成测试也被称为组装测试、联合测试、子系统测试或部件测试等&#xff0c;其主要用于检查各个软件单元之间的接口是否正确。集成测试同时也是单元测试的逻辑扩展&#xff0c;即…

聊聊手机导航软件

目录 1.人在外地没有导航的后果 2.传统导航方式 3.手机软件导航的原理 4.手机导航的优点 1.人在外地没有导航的后果 在外地没有导航的情况下&#xff0c;可能会带来以下一些后果&#xff1a; 1. 容易迷路&#xff1a;没有导航指引的情况下&#xff0c;你可能会走错路线&…

常见前端面试之VUE面试题汇总十三

39. Vue 中 key 的作用 vue 中 key 值的作用可以分为两种情况来考虑&#xff1a; 第一种情况是 v-if 中使用 key。由于 Vue 会尽可能高效地渲染元 素&#xff0c;通常会复用已有元素而不是从头开始渲染。因此当使用 v-if 来 实现元素切换的时候&#xff0c;如果切换前后含有相…

普里戈任或持有近10万个比特币

来源&#xff1a;Beincrypto 作者&#xff1a;David Thomas 编译&#xff1a;Shelby 摘要&#xff1a; 一个持有26 亿美元的比特币钱包已被确定可能与俄罗斯军事承包商有联系。 虽是猜测&#xff0c;但据报道「叶夫根尼普里戈任」的不正规商业行为可能受益于比特币的匿名性功能…

中国应试教育市场:挑战与机遇并存,金榜状元引领前行

2023年全国高考报名人数1291万人再次刷新历史纪录&#xff0c;但一本的录取率仅为23%&#xff1b;教育部2021年开始推行中考分流政策&#xff0c;只有约为50%初中毕业生可以升入普通高中&#xff1b;“双减”政策的推行&#xff0c;使得高考升学的压力提前到中考阶段&#xff0…

ATFX汇市:美元指数已连续六周收阳,需警惕超买风险

ATFX汇市&#xff1a;7月14日当周&#xff0c;因为6月份爆冷的非农就业报告&#xff0c;美元指数大跌2.26%。奇怪的是&#xff0c;在此之后&#xff0c;美元指数进入超强牛市状态。截至上周&#xff0c;已经连续6周收出阳K线&#xff0c;累计涨幅达4.24%&#xff0c;最高触及10…

CI/CD 持续集成 持续交付

CI&#xff08;Continuous integration&#xff09;持续集成 参考&#xff1a;https://www.jianshu.com/p/2132949ff84a 持续集成是指多名开发者在开发不同功能代码的过程当中&#xff0c;可以频繁的将代码行合并到一起并切相互不影响工作。 持续集成的目的&#xff0c;是让…

多店铺智能客服,助力店铺销量倍增

近年来电商发展得非常快速&#xff0c;市场竞争也是愈发激烈了。商家不仅需要提高产品和服务的质量&#xff0c;还要争取为自己获取更多的曝光&#xff0c;以此来分散运营的风险和降低经营的成本&#xff0c;所以越来越多的商家也开始转向多平台多店铺运营。但即使运营多个平台…

Shiro整合SpringBoot,实战下的应用场景

文章目录 前言一、springBootshiro环境准备1.数据库2.ssmp环境搭建3.实体类4.三层搭建5.初始化测试数据 二、Shiro过滤器1.Shiro认证过滤器2.Shiro授权过滤器 三、springBootshiro身份认证1.创建Realm,重写认证方法doGetAuthenticationInfo2.创建shiro配置类3.Postman测试 四、…

并发(读写锁,线程池)03 详细讲解

读写锁 独占锁&#xff1a;一次只能被一个线程占有 共享锁。多个线程可以同时占有 class Apple{public static void main(String[] args) {Mycache mycachenew Mycache();for (int i 0; i <5 ; i) {final int tempi;new Thread(()->{mycache.put(temp"",tem…

北京985学校,交叉学科考英一数三408

北京师范大学(B) 考研难度&#xff08;☆☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1096字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 北…