首页>>后端>>java->LeetCode

LeetCode

时间:2023-12-07 本站 点击:0

算法记录

LeetCode 题目:

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

&emsp;&emsp;请你设计并实现对数时间复杂度的算法解决此问题。 <hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

说明

一、题目

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

二、分析

这个题相对于 H 指数 一毛一样的,只是需要计算时间为 logn 级别的。

而一想到这个级别的查询计算,那肯定就是二分上场了,之前我们是通过从前向后的一步一步的遍历增加的,用二分一次就可以砍掉一半。

class Solution {    public int hIndex(int[] citations) {        int n = citations.length;        int left = 0, right = n - 1;        while (left <= right) {            int mid = (right + left) / 2;            if (citations[mid] >= n - mid) {                right = mid - 1;            } else {                left = mid + 1;            }        }        return n - left;    }}

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

总结

二分查找。

原文:https://juejin.cn/post/7101655046521094157


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