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

news2024/10/6 6:51:16

文章目录

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

一【题目类别】

  • 二分查找

二【题目难度】

  • 中等

三【题目编号】

  • 275.H 指数 II

四【题目描述】

  • 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。
  • h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 n - h 篇论文每篇被引用次数 不超过 h 次。
  • 提示:如果 h 有多种可能的值,h 指数 是其中最大的那个。
  • 请你设计并实现对数时间复杂度的算法解决此问题。

五【题目示例】

  • 示例 1:

    • 输入:citations = [0,1,3,5,6]
    • 输出:3
      • 解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 0, 1, 3, 5, 6 次。由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3 。
  • 示例 2:

    • 输入:citations = [1,2,100]
    • 输出:2

六【解题思路】

  • 本题最重要的是理解题意,要明白我们努力的目标是什么。很明显,题目要求我们在一个升序数组中,找到一个数字,这个数字右边的数字个数加上本数字的总个数刚好等于本数字的值,所以我们每次只需要和本数字右边的数字个数加上本数字的总个数比较就行了
  • 如果本数字右边的数字个数加上本数字的总个数小于或等于本数字的值:向左搜索,说明我们需要的值在数组的左边
  • 如果本数字右边的数字个数加上本数字的总个数大于本数字的值:向右搜索,说明我们需要的值在数组的右边
  • 找到目标数字后,再按照题目的定义,返回其个数即可
  • 需要注意特殊情况需要判断,当找到的值不合法时,需要返回0

七【题目提示】

  • n = = c i t a t i o n s . l e n g t h n == citations.length n==citations.length
  • 1 < = n < = 1 0 5 1 <= n <= 10^5 1<=n<=105
  • 0 < = c i t a t i o n s [ i ] < = 1000 0 <= citations[i] <= 1000 0<=citations[i]<=1000
  • c i t a t i o n s 按升序排列 citations 按 升序排列 citations按升序排列

八【时间频度】

  • 时间复杂度: O ( l o g n ) O(logn) O(logn),其中 n n n为数组的长度
  • 空间复杂度: O ( 1 ) O(1) O(1)

九【代码实现】

  1. Java语言版
class Solution {
    public int hIndex(int[] citations) {
        int len = citations.length;
        int left = 0;
        int right = len - 1;
        while(left < right){
            int mid = (left + right) / 2;
            if(citations[mid] >= len - mid){
                right = mid;
            }else{
                left = mid + 1;
            }
        }
        return citations[right] >= len - right ? len - right : 0;
    }
}
  1. C语言版
int hIndex(int* citations, int citationsSize)
{
    int len = citationsSize;
    int left = 0;
    int right = len - 1;
    while(left < right)
    {
        int mid = (left + right) / 2;
        if(citations[mid] >= len - mid)
        {
            right = mid;
        }
        else
        {
            left = mid + 1;
        }
    }
    return citations[right] >= len - right ? len - right : 0;
}
  1. Python版
class Solution:
    def hIndex(self, citations: List[int]) -> int:
        n = len(citations)
        left = 0
        right = n - 1
        while left < right:
            mid = (left + right) // 2
            if citations[mid] >= n - mid:
                right = mid
            else:
                left = mid + 1
        return n - right if citations[right] >= n - right else 0 

十【提交结果】

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

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

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

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

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

相关文章

Jmeter分布式测试

因为jmeter本身的性能问题&#xff0c;有时候为了尽量模拟业务场景&#xff0c;需要模拟大量的并发请求&#xff0c;此时单台压力机就显得力不从心。针对这个情况&#xff0c;jmeter的解决方案是支持分布式压测&#xff0c;即将大量的模拟并发分配给多台压力机&#xff0c;来满…

三优两重政策解读

什么是三优两重&#xff1a; 优秀大数据产品、优秀大数据解决方案、优秀大数据应用案例和重点大数据企业、重点大数据资源&#xff1b; 1、申报主体 在山东省内注册登记&#xff0c;具备独立承担民事责任的能力&#xff0c;包括各类政府机关、企事业单位及社会组织。 ①.大数据…

【从零开始学习深度学习】33.语言模型的计算方式及循环神经网络RNN简介

目录1. 语言模型1.1 语言模型的计算1.2 nnn元语法的定义2. 循环神经网络RNN2.1 不含隐藏状态的神经网络2.2 含隐藏状态的循环神经网络2.3 应用&#xff1a;基于字符级循环神经网络的语言模型3. 总结1. 语言模型 语言模型&#xff08;language model&#xff09;是自然语言处理…

多媒体服务器核心实现(流管理)

多媒体服务器比较多&#xff0c;实现的功能也很复杂&#xff0c;但其核心就是是转协议&#xff0c;流管理&#xff0c;连接管理&#xff0c;就是一个时序状态机和信令结合的系统。现在的生态有很多现成的轮子&#xff0c;c/c go实现的均可以拿来就用&#xff0c;只需要按一定的…

插槽,依赖注入,动态组件,异步组件,内置组件

插槽&#xff1a;父组件和子组件内容的一个通信 子组件使用<slot>接收父组件传入的内容 如果内容有多个标签时&#xff0c;使用<template>包裹 默认插槽&#xff1a; <template v-slot:default><h2>标题</h2><p>插槽内容</p> <…

Windows——编写jar启动脚本和关闭脚本

文章目录前言启动脚本编写关闭脚本restart.bat 重启脚本前言 假设项目打包后&#xff0c;项目结构为&#xff1a; 此时如果需要再windows环境中进行项目的启动或关闭&#xff0c;需要频繁的手敲命令&#xff0c;很不方便。此时可以编写.bat脚本文件进行项目的控制。 启动脚本…

就业信息追踪|基于Springboot+Vue开发实现就业信息追踪系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

双向链表,添加,删除一个节点

文章目录前言一、创建双向链表&#xff08;重命名&#xff09;二、添加一个节点1.添加头指针&#xff1a;2.若 头指针为空3.若头指针非空三、删除一个节点1.找到某节点2.将节点从链表中删除四. 展示所有的节点五. 实验效果总结前言 链表有几种&#xff0c;大致分为&#xff1a…

小程序之会议OA项目--其他界面

目录一、tabs组件及会议管理布局1、tabs.js2、tabs.wxml3、tabs.wxss4、app.wxss5、list.js6、list.json7、list.wxml二、个人中心布局1、ucenter/index/index.js2、ucenter/index/index.wxml3、ucenter/index/index.wxss一、tabs组件及会议管理布局 1、tabs.js // component…

UDS - 15.2 RequestDownload (34) service

15.2 请求下载(34)服务 来自&#xff1a;ISO 14229-1-2020.pdf 15.2.1 服务描述 客户机使用requestDownload服务发起从客户机到服务器的数据传输(下载)。 在服务器接收到requestDownload请求消息之后&#xff0c;服务器应该在发送积极响应消息之前采取所有必要的操作来接收数据…

常用图像像素格式 NV12、NV2、I420、YV12、YUYV

文章目录目的RGBYUVYCrCb采样格式YUV 4:4:4 采样YUV 4:2:2 采样YUV 4:2:0 采样YUV 存储格式YUV422&#xff1a;YUYV、YVYU、UYVY、VYUYYUV420&#xff1a;I420、YV12、NV12,、NV21扩展目的 了解常用图像像素格式 RGB 和 YUV,像素格式描述了像素数据存储所用的格式&#xff0c;…

Spring MVC框架学习

前言:本篇博客将从三个方面来写我们要学习SpringMVC的什么: 连接:当用户在游览器中输入一个url之后,能将这个url请求映射到自己写的程序,也就是访问一个地址时,能够连接到门自己写的服务器. 获取参数:用户访问时如果带一些参数,我该怎样获取.返回数据:执行业务代码之后…

NVM实现一台电脑对node的多版本管理。

一、NVM&#xff1a;Node Version Management&#xff1b; 下载地址&#xff1a;Releases coreybutler/nvm-windows GitHubA node.js version management utility for Windows. Ironically written in Go. - Releases coreybutler/nvm-windowshttps://github.com/coreybutl…

JavaScript寒假系统学习之数组(一)

JavaScript寒假系统学习之数组&#xff08;一&#xff09;一、数组1.1 什么是数组1.2 数组创建的2种方式1.2.1 利用new创建数组1.2.2 利用数组字面量创建数组1.3 访问数组元素1.4 遍历数组1.5 数组实战训练1.5.1 计算数组的和以及平均值1.5.2 求数组中的最大值1.5.3 数组转化为…

使用Qemu在Windows上模拟arm平台并安装debian10 arm系统(cd镜像) 安装记录

参考&#xff1a;使用Qemu在Windows上模拟arm平台并安装国产化操作系统_viyon_blog的博客-CSDN博客_qemu windows 镜像&#xff1a;debian-10.12.0-arm64-xfce-CD-1.iso 环境&#xff1a;qemu虚拟机&#xff0c;宿主机win10,amd64 QEMU_EFI.fd: (298条消息) qemu虚拟机的bi…

N皇后问题-leetcode51-java回溯解+详细优化过程

说明&#xff1a;问题描述来源leetcode 一、问题描述&#xff1a; 51. N 皇后 难度困难1592 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之…

实验八、直接耦合多级放大电路的调试

一、题目 两级直接耦合放大电路的调试。 二、仿真电路 图1(a)所示电路为两级直接耦合放大电路&#xff0c;第一级为双端输入、单端输出差分放大电路&#xff0c;第二级为共射放大电路。 由于在分立元件中很难找到在任何温度下均具有完全相同特性的两只晶体管&#xff0c;因而…

Active Directory 基础 —— 如何理解group的类型

因为创建一个跨域的组,重新温习了一下最基本的AD知识,所谓温故而知新,把温习的结果整理了一下。AD里面的group类型从范围来说分为global, universal 和 local domain, 从类型来分分为security和distribution。后面的类型理解很容易,security就是纯粹用来权限访问的,而dist…

Java实现FIFO、LRU、LFU、OPT四页面置换算法

题目要求 采用多道程序思想设计一个程序&#xff0c;模拟页存储管理地址变换的过程&#xff0c;可采用FIFO、LRU、LFU、OPT四页面置换算法。基本要求如下&#xff1a; 需要建立访问页表线程、访问快表线程、缺页中断处理线程、访问内存线程等&#xff0c;协同这些线程模拟完成…

JDK17升级之路:JCE cannot authenticate the provider BC问题

问题的产生 报错代码运行环境 JDK&#xff1a;Oracle JDK17 CentOS7.8 这个问题刚拿到比较棘手。原因是本地windows是OK的&#xff0c;centos上是不成功的&#xff0c;报了下面的错误&#xff1a; Caused by: java.lang.SecurityException: JCE cannot authenticate the provi…