算法:二分法---寻找H指数

news2024/11/18 7:35:19

在这里插入图片描述


1、题目:

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

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


2、分析特点:

  • 题目要求:寻找最大值,citations[i] 表示研究者的第 i 篇论文被引用的次数 ==> 排序之后,使用二分法.
  • 二分法使用常见场景 ==> 搜索有序列表:当你需要在一个有序列表(如数组)中查找某个特定元素时,可以使用二分法.

3、代码:

class Solution {
    public int hIndex(int[] citations) {
        int left=0,right=citations.length;
        int mid=0,cnt=0;
        while(left<right){
            // +1 防止死循环
            mid=(left+right+1)>>1;
            cnt=0;
            for(int i=0;i<citations.length;i++){
                if(citations[i]>=mid){
                    cnt++;
                }
            }
            if(cnt>=mid){
                // 要找的答案在 [mid,right] 区间内
                left=mid;
            }else{
                // 要找的答案在 [0,mid) 区间内
                right=mid-1;
            }
        }
        return left;
    }
}

4、复杂度分析:

  • 时间复杂度:O(nlogn),其中 n 为数组 citations 的长度。需要进行 logn 次二分搜索,每次二分搜索需要遍历数组 citations 一次。
    空间复杂度:O(1),只需要常数个变量来进行二分搜索。

5、总结:

二分法使用常见场景 ==> 搜索有序列表:当你需要在一个有序列表(如数组)中查找某个特定元素时,可以使用二分法.


6、其他解决方法:排序法

在这里插入图片描述

解题思路:升序后判断当前的数是否大于其对应的h值就行了

■ 代码:

import java.util.Arrays;

class Solution {
    public int hIndex(int[] citations) {
        Arrays.sort(citations);
        int length = citations.length;
        for (int i = 0; i < length; i++) {
            if (citations[i] >= length - i) {
                return length - i;
            }
        }
        return 0;
    }
}




如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

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

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

相关文章

港联证券:基本面分析的基本知识?

作为一种股票投资剖析办法&#xff0c;根本面剖析是用来研究一家公司在剖析期内的运营状况的一种办法&#xff0c;它重视公司的财政数据、盈余才能、市场占有率以及宏观经济要素等方面&#xff0c;为投资者供给了一个深化了解公司价值的方法。下面&#xff0c;本文将从多个视点…

C语言 —— 初步入门知识(第一个C语言程序、数据类型、变量常量、字符与注释)

本篇文章介绍C语言的基础知识&#xff0c;使读者对C语言能够有一个大概的认识. 不会细写每一个知识点, 但是能够入门C语言, 进行初步的C语言代码阅读. 首先, 什么是语言? 对于人和人之间进行交流的语言, 我们知道, 可以通过汉语, 英语, 日语等语言进行交流. 那么对于人和计算…

spring_注解笔记

spring使用注解开发 文章目录 1.前提1 Bean2 属性注入3 衍生的注解4.自动装配5 作用域 1.前提 步骤1&#xff1a; 要使用注解开发&#xff0c;就必须要保证AOP包的导入 步骤2&#xff1a; xml文件添加context约束 步骤3&#xff1a; 配置注解的支持 <context:annotation-…

【python零基础入门学习】python基础篇(基础结束篇)之数据结构类型-列表,元组,字典,集合(五)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

电商运营管理——商品活动

商品活动很大程度上决定了电商平台的用户活跃度&#xff0c;本篇文章将详细介绍商品活动的几大类目&#xff0c;并举例每一类的不同活动内容。希望本篇文章能对运营岗位的你有所帮助。 电商平台最重要的功能是运营管理&#xff0c;而运营管理中最重要的功能就是各种商品活动&am…

阿里巴巴国际数字商业24届校招大量hc,等你来拿~

阿里巴巴国际数字商业招人啦!!! 今年阿里lazada买家前端团队有大量hc, 同学们快冲啊!!! 除了前端岗,还有算法, 客户端等 图中的二维码为我的个人内推码, 直接扫码进去填写简历提交即可, 后续可以帮忙查看内推进度, 有什么疑问我会在线回复 职位要求 【必备项】 1、熟练使用各种…

程序员自由创业周记#11:商标

商标重要吗 为什么我那么重视App名字里要有一个自己的商标&#xff0c;主要防止的是被竞争对手抄袭&#xff0c;甚至连名字也起同样的&#xff0c;如果没有商标&#xff0c;很难维权&#xff0c;只能放任自由。在上上家公司&#xff0c;我们的产品起了一个与别人重复的名字&am…

MATLAB中findpeaks函数用法

目录 语法 说明 示例 在MATLAB中&#xff0c;findpeaks函数用于查找信号中的峰值&#xff08;peaks&#xff09;。以下是findpeaks函数的基本语法、说明以及示例&#xff1a; 语法 [pks,locs] findpeaks(x) [pks,locs] findpeaks(x, Name, Value)说明 参数说明 x&…

Windows 性能突然打鸡血,靠 Bug 修复了多年顽疾

要说 的 Bug 集中地&#xff0c;当属资源管理器。 速度缓慢、卡顿、崩溃&#xff0c;不同设备、不同版本的用户都有不同的感受。 严格来说&#xff0c;这其实是 Windows 的传统艺能&#xff0c;要完美修复可不容易。 而作为小老弟的文件资源管理器&#xff0c;时不时来个无响…

web技术——HTML文档基础部分(1)

文章目录 前言壹、基本语法1.1 含义1.2 注释1.3 HTML文档的标准结构 贰、基本的文本标记2.1 段落2.2 保留空白字符2.3 标题2.4 水平线 前言 HTML是一种标记语言,这意味着它用来标记文档中的各个部分&#xff0c;已指定文档在打印件或者显示器上的显示方式。简单来说&#xff0…

pycharm终端激活环境时报错

pycharm终端激活环境时报错 nvoke-Expression : 无法将参数绑定到参数“Command”&#xff0c;因为该参数为空字符串。 所在位置 E:\anaconda\anaconda\anaconda3\envs\wsbpytorch\shell\condabin\Conda.psm1:76 字符: 36 Invoke-Expression -Command $activateCommand;~~~~~~~…

获取实时时间+日期+星期

1.展示 2.代码 data() {return {newYear: "0000 年 00 月 00 日 ",newTime: "00:00:00",today: "",timer: null, //时间定时器};}, created() {this.getCurrentDate();this.timer setInterval(() > {this.getCurrentDate();}, 1000); }, met…

pve 故障记录

pve 故障记录 通过网页pve console 执行 参考网页&#xff1a; cat /etc/os-release proxmox吧 https://foxi.buduanwang.vip/pve https://www.reddit.com/r/Proxmox/comments/vy33ho/stuck_at_grub_rescue_after_an_update_and_reboot/?rdt37867 https://pve.proxmox.co…

Versus-在线全球物品可视化比较平台 万物皆可对比

Versus介绍 Versus是一个成熟的在线全球物品可视化比较平台&#xff0c;从比较手机到比较城市&#xff0c;涵盖 90 多个类别&#xff0c;可以在线比较智能手机、相机、耳机、显卡等&#xff0c;Versus 提供详细的技术规格、数据可视化和价格比较&#xff0c;是从智能手机到 PC…

使用scp命令失败出错

使用scp命令失败出错&#xff0c;无反应。 解决&#xff1a; 1.使用ifconfig查看目标主机公网IP地址 ifconfig需使用公网ip 2.配置免密登录 可参考 远程登录ssh ssh-copy-id root目标主机ip再次尝试scp命令。 SCP&#xff08;Secure Copy&#xff09;是一个用于在本地主机和…

Vscode远程调试及gdbserver配置

如果你像我一样更喜欢使用 GUI 而不是命令行来设置断点、单步调试代码以及​​在程序运行时检查值&#xff0c;那么您可以通过以下方法设置 VSCode 和 gdbserver 以在运行时在本地编辑和调试代码它在远程服务器上。 注意&#xff1a;我在本地使用 macOS Sierra&#xff0c;远程…

低功耗无线扫描唤醒技术,重塑物联网蓝牙新体验

随着人类社会活动的信息化和通信技术的发展&#xff0c;传统设施越来越倾向于网络化、无线化。物联网被人们视为继计算机、互联网之后信息技术产业发展的第三次革命。无线短距离通信方式是物联网的主要通信方式之一&#xff0c;随着物联网终端通信设备应用越来越广&#xff0c;…

Python匿名函数

简单来说&#xff0c;匿名函数就是懒。 结构 函数名 lambda 参数 : 函数体 fun lambda x,y : x*y*y fun(3,5)优点 可以让写代码更“懒”一点

锐捷RG-UAC统一上网行为管理审计系统信息泄漏漏洞

一、漏洞简介 锐捷RG-UAC统一上网行为管理审计系统存在账号密码信息泄露,可以间接获取用户账号密码信息登录后台 。 二、影响版本 锐捷RG-UAC统一上网行为管理审计系统 三、资产测绘 hunterapp.name"Ruijie 锐捷 RG-UAC"登录页面 四、漏洞复现 F12搜索super_…

ERR_CONNECTION_REFUSED等非标准的HTTP错误状态码原因分析和解决办法

文章目录 DNS Resolution Failed- DNS服务器故障- DNS配置错误- DNS劫持- 域名过期- 其他网络问题 ERR_CONNECTION_REFUSED-"ERR_CONNECTION_REFUSED" 错误可能有多种原因 ERR_SSL_PROTOCOL_ERROR"ERR_SSL_PROTOCOL_ERROR" 错误的原因和解决办法1. SSL/TLS…