【017】274. H 指数【[二分查找 || 排序]】
2026/4/28 18:43:05 网站建设 项目流程

H 指数

给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。
根据维基百科上 h 指数的定义:h 代表“高引用次数”,一名科研人员的 h指数是指他(她)的 (n 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 n - h 篇论文每篇被引用次数 不超过 h 次。
如果 h 有多种可能的值,h 指数 是其中最大的那个。

https://leetcode.cn/problems/h-index/description/

  1. 数组排序
  2. h <=Math.min(数组长度, 数组中最大值),降序遍历h(max)
  3. 或二分法:h指数可能值【1, Math.min(数组长度, 数组中最大值)】,二分查找满足条件的最大值。
  4. stream流过滤后计数
/* * Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved. */packagecom.huawei.prac;importjava.util.Arrays;classSolutionNd{publicstaticvoidmain(String[]args){int[]citations={3,0,6,1,5};int[]citations1={100};System.out.println(hIndex(citations));System.out.println(hIndex(citations1));}/** * 274. H 指数[二分查找 || 排序] * * @param citations citations[i] 表示研究者的第 i 篇论文被引用的次数 * @return (n 篇论文中)总共有 h 篇论文分别被引用了至少 h 次 */classSolution{publicinthIndex(int[]citations){Arrays.sort(citations);intmaxH=Math.min(citations[citations.length-1],citations.length);intresult=maxH;// 0 1 3 5 6for(;result>0;result--){intresultTmp=result;intrightH=(int)Arrays.stream(citations).filter(num->num>=resultTmp).count();intleftH=(int)Arrays.stream(citations).filter(num->num<resultTmp).count();if(rightH>=result){returnresult;}}returnresult;}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询