码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 274. H 指数


    文章目录

    • 一、题目
      • 1、题目描述
      • 2、基础框架
      • 3、原题链接
    • 二、解题报告
      • 1、思路分析
        • 1.1 方案一
        • 1.2 方案二
      • 2、时间复杂度
      • 3、代码详解
        • 3.1 方案一
        • 3.2 方案二
    • 三、本题小知识

    一、题目

    1、题目描述

    给你一个整数数组 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 == citations.length
    1 <= n <= 5000
    0 <= citations[i] <= 1000

    2、基础框架

    • C++版本给出的基础框架如下:

    3、原题链接

    https://leetcode.cn/problems/h-index/

    二、解题报告

    1、思路分析

    1.1 方案一

       ( 1 ) (1) (1)创建一个大小为n的结果数组。
       ( 2 ) (2) (2)遍历原始数组,以当前遍历值为界,在结果数组中小于该值的下标元素值加1。
       ( 3 ) (3) (3)从大到小遍历结果数组,当元素值大于等于下标时,将下标返回。

    1.2 方案二

       ( 1 ) (1) (1)先从小到大排序。
       ( 2 ) (2) (2)遍历数组,如果当前的值大于等于剩余未遍历的(包括当前遍历的)元素个数,则将其结果返回。

    2、时间复杂度

    3、代码详解

    3.1 方案一

    class Solution {
    public:
        int hIndex(vector<int>& citations) {
            int n = citations.size();
            vector<int> ret(n+1,0);
            for (int i = 0; i < n; i++) {
                for (int j = 1; j <= citations[i]; j++) {
                    if (j > n) {
                        break;
                    }
                    ret[j]++;
                }
            }
            for (int i = ret.size() - 1; i > 0; i--) {
                if (ret[i] >= i) {
                    return i;
                }
            }
            return 0;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3.2 方案二

    class Solution {
    public:
        int hIndex(vector<int>& citations) {
            int n = citations.size();
            sort(citations.begin(), citations.end());
            for (int i = 0; i < citations.size(); i++) {
                if (citations[i] >= (n-i)) {
                    return n-i;
                }
            }
            return 0;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    三、本题小知识

  • 相关阅读:
    为保证软件开发质量,如何提高检查效率?
    k8s基础:kubectl delete --ignore-not-found参数选项作用
    35 个 Spark 常用算子总结
    【HTML】HTML网页设计---叮当猫网页设计
    解读GaussDB(for MySQL)灵活多维的二级分区表策略
    第七章:GEE 数据的导出
    使用perming加速训练可预测的模型
    永磁材料的特性
    Oracle-PL/SQL编程
    Java开发者必备:支付宝沙箱环境支付远程调试指南
  • 原文地址:https://blog.csdn.net/qq_44842918/article/details/134084669
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号