面试经典150题——H指数

面试经典150题 day11

      • 题目来源
      • 我的题解
        • 方法一 排序+从后往前遍历
        • 方法二 计数排序+后缀和
        • 方法三 排序+从左到右遍历

题目来源

力扣每日一题;题序:274

我的题解

方法一 排序+从后往前遍历

先将数组升序排序,然后h从n到0开始遍历,计算被引用次数大于等于 h的论文数

时间复杂度:O(nlogn)
空间复杂度:O(1)

public int hIndex(int[] citations) {int n=citations.length;Arrays.sort(citations);int count=0;//表示h值时,被引用次数大于等于 h的论文数int index=n;//表示h值for(int i=n-1;i>=0;i--){//当引用值大于h时,需要将count加1if(citations[i]>=index)count++;else{//若被引用次数大于等于 h的论文数大于h则直接返回h值,因为是从大往小遍历的if(count>=index)return index;//更新h值while(citations[i]<index&&count<index)index--;//当引用值大于h时,需要将count加1if(citations[i]>=index)count++;}}//返回最终的h值return index;
}
方法二 计数排序+后缀和

先计算每个引用次数出现的次数(引用次数大于n的作为n处理),然后计算器后缀和,只要suf[i]>=i则返回i,否则继续求前缀和。

时间复杂度:O(n)
空间复杂度:O(n)

    public int hIndex(int[] citations) {int n=citations.length;int[] count=new int[n+1];for(int i=0;i<n;i++){if(citations[i]>=n)count[n]++;elsecount[citations[i]]++;}for(int i=n;i>=0;i--){if(i!=n)count[i]+=count[i+1];if(count[i]>=i)return i;}return 0;}
方法三 排序+从左到右遍历

直接先排序,并将h初始设置为0,每当末尾的满足 citations[right]>h时,h加一。

时间复杂度:O(nlogn)
空间复杂度:O(1)

public int hIndex(int[] citations) {Arrays.sort(citations);int h=0;int right=citations.length-1;while(right>=0&&citations[right]>h){h++;right--;}return h;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

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

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

相关文章

为啥转化为可编辑面片后有这么多点和线

可以删一下 按住alt按移除可以删掉 选择你要删的那些线 按住alt点移除

一个typescript 5 + rollup 4 打包lib模板仓库实现

前言 昨天在写点什么东西的时候&#xff0c;发现有些逻辑可以搞成一个 npm 模块。 找了下看看&#xff0c;有没有什么好用现成模板用于开发。。发现并没有&#xff1b; 那有需求就解决需求。。 需求 基于当前的流行技术栈选型(rollup 4.x typescript 5.x)提供一个最小化模…

eBay、亚马逊自养号测评如何避免风控账号关联选择合适网络IP环境

在自养号下单中选择适合的网络环境至关重要。经过多次实践与测试&#xff0c;积累了大量的经验&#xff0c;希望能够与大家分享&#xff0c;帮助大家避开陷阱&#xff0c;顺利前行。 市面上的网络环境种类繁多&#xff0c;从纯IP类的Luminati、Rola&#xff0c;到纯环境类的VM…

编写Spark独立应用程序

执行本文之前&#xff0c;先搭建好spark的开发环境&#xff0c;我目前只搭建了standalone模式&#xff0c;参考链接 &#xff1a; Spark Standalone模式部署-CSDN博客 1. 安装sbt 1&#xff09;下载sbt 网址&#xff1a;https://www.scala-sbt.org/download.html &#xff0c…

【云原生 • Docker】 ELK 8.4.3 docker 保姆级安装部署详细步骤

文章目录 ELK简介二、版本说明三、安装部署3.1 创建docker网络3.2 Elasticsearch拉取docker镜像,版本:8.4.3第一次执行docker脚本可以看到控制台的信息,找到这个信息并保存下来创建Elasticsearch挂载目录给创建的文件夹授权将容器内的文件复制到主机上删除容器修改docker脚本…

【GPTs分享】GPTs分享之Image Recreate | img2img​

简介 该GPT是一个专门用于图像编辑、重建和合并的工具。它通过详细的自动图像描述和生成&#xff0c;帮助用户从源图像中重现或修改图像。此工具设计用于为视障用户提供图像内容的详细描述&#xff0c;并生成全新的图像&#xff0c;以满足特定的视觉需求。 主要功能 \1. 图像…

Python基础:【练手小实验系列】列表、元组、字典、集合

文章目录 题目练习题1: 列表合并和排序练习题2: 元组元素计数练习题3: 字典键值互换练习题4: 集合的交集与并集参考答案练习题1: 列表合并和排序练习题2: 元组元素计数练习题3: 字典键值互换练习题4: 集合的交集与并集题目 练习题1: 列表合并和排序 题目描述: 给定两个已经排…

webpack源码分析——enhanced-resolve库之cdUp函数

一、 cdUp函数 函数功能 该函数寻找上层目录&#xff0c;每次调用函数时对输入的路径进行一次寻找上级目录。如果没有找到返回null 二、函数分析 传入的directory判读是否为‘/’如果是直接返回nullif (directory "/") return null;获取‘/’和‘\’在directory 中…

Unity开发holoLens2应用时的ProjectSettings配置

正确的进行Unity工程配置&#xff0c;才能进行后续的【发布】和【部署】操作… 本案例开发环境说明&#xff1a; Unity2021.3.18Win10VS2022HoloLens2 一、平台设置 二、Quality画面质量设置 三、Player玩家设置 四、XR-Plug设置 五、环境测试 导入一个官方demo&#xff0c…

基于C语言的贪吃蛇实现

头文件 #pragma once #include<stdio.h> #include<Windows.h> #include<stdbool.h> #include<locale.h> #include<time.h> #define KEY_PRESS(vk) ( (GetAsyncKeyState(vk) & 1) ? 1 : 0) #define POS_X 24 #define POS_Y 5 #define FOOD …

网址分类-杂项

网址分类 Python可视化库matplotlibplotnineseaborn 科学计算库numpy scipy数据分析库pandas 人工智能opencvkeras 工具网站电子工具 Python 可视化库 matplotlib matplotlib官网 plotnine plotnine seaborn seaborn 科学计算库 numpy numpy官网 scipy scipy官网 …

ORAN C平面 Section Extension 23

ORAN C平面Section扩展23用于任意symbol模式的调制压缩参数。此section扩展允许为一个或多个“SymPrbPatterns”指定多组“mcScaleReMask、csf和mcScaleOffset”值。“SymPrbPattern”用于指定一组PRB&#xff0c;这些PRB可以跨越使用prbPattern指定的整个PRB范围&#xff08;频…

重生奇迹mu坐骑怎么升级

重生奇迹mu坐骑怎么升级 1、前期&#xff0c;都是主线任务&#xff0c;我们必须要跟着主线任务走&#xff0c;前面的话升级一次需要的经验很少的&#xff0c;一天下来可以升级100级是轻轻松松的&#xff0c;主线任务是比较多的&#xff0c;我们跟着任务一直做差不多可以到150级…

dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,如何解决?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

计算机组成原理【CO】Ch7 I/O大题

目录 I/O大题解题方法 I/O接口 各种I/O方式的特点 I/O端口编址 程序查询方式 中断控制方式 DMA控制方式 程序中断的工作流程 程序中断的工作流程 DMA方式和中断方式的区别 I/O大题解题方法 CPU 程序查询中断DMA I/O接口的类型 按字传输&#xff1a;每次传输一个字 程…

【C++】日期类Date(详解)

&#x1f525;个人主页&#xff1a;Forcible Bug Maker &#x1f525;专栏&#xff1a;C 目录 前言 日期类 日期类实现地图 获取某年某月的天数&#xff1a;GetMonthDay 检查日期合法&#xff0c;构造函数&#xff0c;拷贝构造函数&#xff0c;赋值运算符重载及析构函数…

【数据结构2-线性表】

数据结构2-线性表 1 线性表-数组2 线性表-单链式结构2.1 前插顺序单链表2.2 后插顺序单链表2.3 循环单链表2.4 双向链表 总结 线性表、栈、队列、串和数组都属于线性结构。 线性结构的基本特点是除第一个元素无直接前驱&#xff0c;最后一个元素无直接后继之外&#xff0c;其他…

linux实用C++库之json

目录 1 介绍2 内容 1 介绍 本博客用来记录linux下json库的基本使用。 2 内容 安装&#xff1a; 使用&#xff1a; CMakeLists.txt编写&#xff1a;

.net反射(Reflection)

文章目录 一.概念&#xff1a;二.反射的作用&#xff1a;三.代码案例&#xff1a;四.运行结果&#xff1a; 一.概念&#xff1a; .NET 反射&#xff08;Reflection&#xff09;是指在运行时动态地检查、访问和修改程序集中的类型、成员和对象的能力。通过反射&#xff0c;你可…

【游戏专区】飞机大战

打过飞机的人都知道&#xff0c;不是那么好打滴&#xff0c;求得麻袋&#xff0c;甩掉你那脑子里的黄色信息。活不多说&#xff0c;我们开始吧。 1、easyX的原理 基于Windows图形编程&#xff0c;将Windows下的复杂程序过程进行封装&#xff0c;仅给用户提供一个简单熟悉的接…