首页 > 编程语言 >#yyds干货盘点# LeetCode程序员面试金典:H 指数 II

#yyds干货盘点# LeetCode程序员面试金典:H 指数 II

时间:2023-10-16 23:31:53浏览次数:66  
标签:yyds right 示例 int 金典 mid II citations left

题目:

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

h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。

请你设计并实现对数时间复杂度的算法解决此问题。

 

示例 1:

:
citations = [0,1,3,5,6]
5
, 1, 3, 5, 6
3 
3
3
3

示例 2:

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

 

代码实现:

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

标签:yyds,right,示例,int,金典,mid,II,citations,left
From: https://blog.51cto.com/u_13321676/7894915

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:分发饼干
    1.简述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >=g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩......
  • 260. 只出现一次的数字 III
    题目题解题解一直接使用HashSet判断classSolution{publicint[]singleNumber(int[]nums){Set<Integer>set=newHashSet<>();for(intnum:nums){if(set.contains(num)){set.remove(num);......
  • [LeetCode] 260. 只出现一次的数字 III
    题目给你一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。你可以按任意顺序返回答案。你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。思路可以用哈希表um映射存储每一个输入的值,输入一次就给......
  • IINA Mac:免费的视频播放器
    IINAMac是一款免费的视频播放器,适用于Mac平台。它的外观和设计都遵循了现代MacOS的风格,优雅而简洁。IINAMac的开发者使用Swift编程语言进行开发,使得这款播放器拥有强大的性能和兼容性,可以流畅播放几乎所有主流的视频格式以及进行网络播放。→→↓↓载IINAMac版IINAMac不仅......
  • #yyds干货盘点# LeetCode程序员面试金典:H 指数
    题目:给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。根据维基百科上 h指数的定义:h 代表“高引用次数”,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且每篇论文 至少 被引用 h 次......
  • #yyds干货盘点# LeetCode程序员面试金典:四数相加 II
    1.简述:给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i,j,k,l) 能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+nums4[l]==0 示例1:输入:nums1=[1,2],nums2=[-2,-1],nums3=[-1,2],nums4=[0,2]输出:2......
  • 137. 只出现一次的数字 II
    1.题目介绍2.题解2.1哈希表思路同本系列题I,不过多赘述代码classSolution{public:intsingleNumber(std::vector<int>&nums){std::unordered_map<int,int>map;for(intnum:nums){map[num]++;}for(autopair......
  • 137. 只出现一次的数字 II
    题目题解方法一直接用哈希表出现3次则从哈希表移除,最后剩下的就是结果classSolution{publicintsingleNumber(int[]nums){Map<Integer,Integer>map=newHashMap<>();for(intnum:nums){Integerinteger=map.getOrDe......
  • 【gdb】打印ASCII和宽字符字符串
    打印ASCII和宽字符字符串1.例子:#include<stdio.h>#include<wchar.h>intmain(void){charstr1[]="abcd";wchar_tstr2[]=L"abcd";return0;}用gdb调试程序时,可以使用“x/s”命令打印ASCII字符串。以上面程序为例:[root@node0......
  • 代码随想录算法训练营-动态规划-3-(0-1背包问题)|416. 分割等和子集、1049. 最后一块石
    416.分割等和子集01背包的递推公式为:dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);如果dp[j]==j说明,集合中的子集总和正好可以凑成总和j,理解这一点很重要。1classSolution:2defcanPartition(self,nums:List[int])->bool:3_sum=......