zoukankan      html  css  js  c++  java
  • 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);
    }
    
  • 相关阅读:
    第04组(64) 需求分析报告
    第04组(64) 团队展示
    结对编程作业
    Python单元测试框架 Unittest 的简单使用方法
    第一次个人编程作业
    第09组 Alpha冲刺 总结
    Swagger 工具集
    第09组 Alpha冲刺(6/6)
    第09组 Alpha冲刺(5/6)
    第09组 Alpha冲刺(4/6)
  • 原文地址:https://www.cnblogs.com/fyusac/p/15002484.html
Copyright © 2011-2022 走看看