`

Leetcode - H-Index II

 
阅读更多
Follow up for H-Index: What if the citations array is sorted in ascending order? Could you optimize your algorithm?

[分析]
思路:二分查找。参考解法
https://leetcode.com/discuss/56122/standard-binary-search
自己的实现倒也是二分查找,但因为没有理解二分查找的精髓,写得磕磕碰碰,修修补补才被Accept,代码因此也不好看,yb君一开始甚至以为是错误的。看讨论区高票解法时觉得不理解,为什么不用考虑我实现中需要的特殊情形呢,为什么return 那样写。yb君指点说,使用二分查找解题时要清楚左右边界代表的含义,参考解法中[left, right]表示尚待判断的区间,[0, left -1]表示已确认不属于目标集合的区间,而[right+1, N - 1]表示已确认属于目标集合的区间。
换句话说right表示不属于目标集合的最大下标。因此迭代结束,right + 1是目标集合的第一个元素。目标集合中元素的性质是citations[i] >= 目标集合大小。

public class Solution {
    public int hIndex(int[] citations) {
        if (citations == null || citations.length == 0)
            return 0;
        int N = citations.length;
        int left = 0, right = N - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (citations[mid] == N - mid)
                return citations[mid];
            else if (citations[mid] > N - mid)
                right = mid - 1;
            else
                left = mid + 1;
        }
        return N - (right + 1);
    }
}
分享到:
评论

相关推荐

    leetcode题库-LeetCode-PHP:LeetCode算法题

    leetcode题库 LeetCode-PHP 坚持每天做算法题 (๑╹ヮ╹๑)ノ Studying makes me happy 文件夹 Array 数组 Backtracking 回溯算法 Binary Search 二分查找 Bit Manipulation 位运算 Breadth ...h ...index.ph

    博弈问题leetcode-Design-7:设计-7

    在给定的“博弈问题leetcode-Design-7”主题中,我们可以聚焦于两个主要的知识点:LFU(Least Frequently Used)缓存设计和H-Index算法。这两个问题都是LeetCode平台上的经典编程挑战,旨在测试和提升开发者在数据...

    Leetcode的ac是什么意思-LeetCodeInJava:leetcode-java

    Leetcode的ac是什么意思 LeetCodeInJava List #98 Validate Binary Search Tree #100 Same Tree #104 Maximum Depth of Binary ...II ...#274 H-Index #283 Move Zeroes #292 Nim Game #318 Maximum P

    怎么刷leetcode-leetcode_array:leetcode_array

    H-Index II 二分查找 最短词距 最短词距 II 最短词距 III 包含重复 包含重复 II 包含重复 III 跳跃游戏 跳跃游戏二 买卖股票的最佳时机 买卖股票的最佳时机 II 买卖股票的最佳时机 III 买卖股票的最佳时机 IV 有冷却...

    leetcode给单链表加一js实现-leetcode-By[removed]LeetCode解决方案(全部通过JavaScript!)h

    二、Index目录引导 其中数字表示题目的顺序编号 1.运算基础(数字的基本运算、简单的求和等) 01 Two Sum :两数之和 07 Reverse Integer:翻转整数 09 Palindrome Number:回文数 11 Container With Most Water:双...

    LeetCode最全代码

    137 | [Single Number II](https://leetcode.com/problems/single-number-ii/) | [C++](./C++/single-number-ii.cpp) [Python](./Python/single-number-ii.py) | _O(n)_ | _O(1)_ | Medium ||| 190 | [Reverse Bits]...

    leetcode答案-Conquer-Leetcode:征服-Leetcode

    leetcode 答案 Conquer-Leetcode Binary Search 二分法 前提:有序!!! 【Arrays.sort(nums)--...H-Index II 注意是找后面的target 而且是动态target sqrtx 答案集进行二分 找 mid &lt;= x/mid 的最后一个值 Find Pea

    java面试题-leetcode题解之第274题H指数.zip

    hIndex--; } else { break; } } ``` 在这个过程中,我们不断累加当前论文的引用次数,如果累加上去的引用总数大于等于当前的论文数(即h+1),说明满足H指数条件,可以继续增加H指数。否则,说明已经找不到更...

    leetcode1004-leetcode:leetcode

    E:简单,M:中等,H:困难 数组和字符串 217. Contains Duplicate (E) 48. Rotate Image (M) -&gt; 2 73. Set Matrix Zeroes (M) 1. Two Sum (E) 167. Two Sum II - Input array is sorted (E) 653. Two Sum IV - ...

    leetcode1185-LeetCode:这是我的LeetCode解决方案和笔记的笔记本

    H-Index II(二分搜索) 第441章排列硬币(二元搜索) #107. 二叉树层次遍历二(BFS树) #79. 词搜索 (DFS) 第797章从源到目标的所有路径 (DFS) 树 #107. 二叉树层次遍历二(BFS树) #106. 从中序和后序遍历(递归)...

    leetcode中国-oracle:Oracle

    leetcode中国 买卖股票 从easy一直问到hard 数独 从medium的判断是不是valid 到 hard的solve 数独 从BST里面删除一个node (要求写test case) design就是皮毛的问题。。。我几乎就是把Harvard那个intro system design...

    C语言入门-leetcode练习之第43题字符串相乘.zip

    在本资源包"C语言入门-leetcode练习之第43题字符串相乘.zip"中,主要涉及的是使用C语言解决LeetCode算法题目中的第43题——字符串相乘。LeetCode是一个在线平台,提供了大量的编程练习题,旨在提升编程技能和算法...

    leetcode卡-todo-list:代码规范/待办事项

    leetcode卡 Best Practice 通过让路由的父级渲染一个单独的 router-view 组件,来实现多级路由的嵌套关系 { path: '/survey', name: 'questionnaire', component: { render: h =&gt; ( ) }, children:[ //... ] } ...

    leetcode提交超出时间限制-leetcode:leetcode解决方案的存储库

    H-Index 1 相同,但问题陈述建议使用二分搜索; 在讨论中还发现了一个有趣的想法,可以进一步改善运行时。 8月3日 难的 8月4日 中等的 8月4日 中等的 1 次错误提交 - 超出时间限制,需要进行简单但至关重要的优化。 ...

    gasstationleetcode-LeetCode_Practice:我的LeetCode练习从2020年开始

    加油站 leetcode 力扣_实践 标签: leetcode ...275_H_Index_II 217_Contain_Duplicate 55_Jump_Game 45_Jump_Game_II 121_Best_Time_to_Buy_and_Sell_Stock 122_Best_Time_to_Buy_and_Sell_Stock_

    C语言-C语言编程基础之leetcode题解第1题两数之和.zip

    在C语言中,编程基础是学习任何高级概念的基石,而LeetCode是一个广泛使用的在线平台,它提供了大量的编程挑战,帮助开发者提升技能并准备技术面试。本压缩包文件聚焦于LeetCode的第一道题目——"两数之和",这是一...

    java面试题-leetcode题解之第6题Z字形变换.zip

    ["A", "B", "C", "I", "H", "G", "E", "F", "D", "M", "N", "O", "P", "Q", "R", "J", "K", "L"] ``` ### 解决方案 在Java中,我们可以采用以下步骤来解决这个问题: 1. **初始化结果数组**:首先创建一个新的二...

    c语言-c语言编程基础之leetcode题解第17题电话号码的字母组合.zip

    在C语言编程中,LeetCode是一个非常受欢迎的在线平台,用于练习和提升编程技能,特别是算法和数据结构。第17题"电话号码的字母组合"是其中一道经典的题目,它涉及到了字符串处理、递归和回溯等编程概念。 题目描述...

    python 实现 leetcode 各种问题 课程设计 代码

    H指数(H Index) 最近最少使用(Least Recently Used) 最近最少频率使用缓存(LFU Cache) 线性同余生成器(Linear Congruential Generator) 最近最久未使用缓存(LRU Cache) 魔幻菱形模式(Magic Diamond ...

Global site tag (gtag.js) - Google Analytics