• 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);
    }
    
  • 相关阅读:
    项目支持
    PHP wamp 环境配置
    事务 锁 高并发下的解决方法
    Hybrid开发
    Phonegap IOS 篇 -如何用虚拟机发布APP
    Visual Studio 切换到设计模式卡死解决方法
    批处理基本命令
    Phonegap Android篇
    jQuery插件——Validation Plugin
    PHP PDO学习(二) exec执行SQL
  • 原文地址:https://www.cnblogs.com/fyusac/p/15002484.html
Copyright © 2020-2023  润新知