• leetcode 275 H 指数II


    给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照 升序排列 。编写一个方法,计算出研究者的 h 指数。

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

    示例:

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

    说明:

    如果 h 有多有种可能的值 ,h 指数是其中最大的那个。

    二分搜索

    /**
     * 二分查找
     *
     * @param citations
     * @return
     */
    public static int hIndex(int[] citations) {
        if (citations == null || citations.length == 0) return 0;
    
        // 目标值 H>=length-H.index && H<=H.index
        int n = citations.length;
        int left = 0, right = n - 1;
        while (left <= right) {
            int mid = (right + left) >> 1;
            if (citations[mid] >= n - mid) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return n - left;
    }
    

    测试用例

    public static void main(String[] args) {
        int[] citations = new int[]{};
        int index = HIndex.hIndex(citations);
        System.out.println("HIndex demo01 result : " + index);
    
        citations = new int[]{0, 1, 3, 5, 6};
        index = HIndex.hIndex(citations);
        System.out.println("HIndex demo02 result : " + index);
    }
    
  • 相关阅读:
    leetcode 567 滑动窗口
    田忌赛马
    去除CSDN无用的打印边框,显示数据
    操作系统博客清单
    OpenKiwi学习笔记
    开源minigui移植
    嵌入式GUI总结
    short int 变量的取值范围
    68 进程等待机制的实现 下
    67 进程等待机制的实现 上
  • 原文地址:https://www.cnblogs.com/fyusac/p/15002484.html
Copyright © 2020-2023  润新知