2019独角兽企业重金招聘Python工程师标准>>>

问题:

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

解决:

① 给定的是有序数组,就不需要排序了。

class Solution {//139ms
    public int hIndex(int[] citations) {
        for (int i = 0;i < citations.length;i ++){
            if (citations.length - i <= citations[i]){
                return citations.length - i;
            }
        }
        return 0;
    }
}

② 二分搜索。

class Solution { //12ms
    public int hIndex(int[] citations) {
        if (citations == null || citations.length == 0) return 0;
        int len = citations.length;
        int left = 0;
        int right = len - 1;
        while (left <= right){
            int mid = (right - left) / 2 + left;
            int count = len - mid;
            if (citations[mid] == count){
                return count;
            }else if (citations[mid] > count){
                right = mid - 1;
            }else {
                left = mid + 1;
            }
        }
        return len - left;
    }
}

转载于:https://my.oschina.net/liyurong/blog/1591839

有序数组中的h引用 H-Index II相关推荐

  1. (c语言)输入一个数,将该数按原规律插入到有序数组中

    (c语言)输入一个数,将该数按原规律插入到有序数组中 #include<stdio.h> #include<stdlib.h> int main(){int arr[11]={ ...

  2. 力扣 26.删除有序数组中的重复元素

    文章目录 题目 思路 AC代码 收获 题目 删除有序数组中的重复元素 思路 快慢指针.快指针不断向前走.判断快指针所指的数与快指针前面的数是否相等,如果相等就说明是重复的,要继续向后移动,如果不相等, ...

  3. C语言向有序数组中插入一个数使该数组仍保持有序

    C语言向有序数组中插入一个数使该数组仍保持有序 #include<stdio.h> int main() {     int n,i,j,t,k;     printf("您喜欢 ...

  4. C语言:向一个有序数组中插入一个数据,并保持数组的有序性。

    C语言:向一个有序数组中插入一个数据,保持数组的有序性. #include <stdio.h> //向一个有序数组中插入一个元素,重新实现有序,并输出. int main() {//注意数 ...

  5. code第一部分数组:从有序数组中移除重复的数据

    code第一部分数组:从有序数组中移除重复的数据 第二题 从有序数组中移除重复的数据,但是可以保留2个重复的数. For example, Given sorted array A = [1,1,1, ...

  6. 力扣——删除有序数组中的重复项

    删除有序数组中的重复项 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 ...

  7. 求栈中元素个数算法_Algorithm 大家都会的去除有序数组中重复元素的三种算法...

    问题描述 给定一个有序数组,要删除数组重复出现的元素,使得每个元素之出现一次,然后返回移除重复数组后的新长度: 示例: 给定数组 nums = [1,2,4,4],删除重复出现的元素后,原数组变成 n ...

  8. LeetCode算法 删除有序数组中的重复项 删除有序数组中的重复项|| C++

    目录 题目 删除有序数组中的重复项 参考答案 题目 删除有序数组中的重复项|| 参考答案 题目 删除有序数组中的重复项 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ...

  9. numpy使用np.argmax函数获取一维数组中最大值所在的索引(index of largest value in numpy array with np.argmax)

    numpy使用np.argmax函数获取一维数组中最大值所在的索引(index of largest value in numpy array with np.argmax) 目录 numpy使用np ...

  10. Leetcode1685. 有序数组中差绝对值之和[C++题解]:前缀和和差的绝对值之和

    文章目录 题目分析 题目链接 题目分析 分析: 货仓选址同类型题目. 差的绝对值求和,分两半,前面的都小于等于它,后面的都大于等于它. 另外需要注意 前缀和的技巧.O(1)时间求区间之和. 总的时间复 ...

最新文章

  1. ArcEngine开发中“错误类型****未定义构造函数”
  2. Web后门工具WeBaCoo
  3. python最新版本-官方宣布不再维护Python2,并每年发布一个新版本
  4. vi的插入模式下退格和方向键不能使用的解决方法
  5. 中国中医科学院中药资源中心2021年公开招聘应届毕业生预公告
  6. 微服务开发过程中需要注意的若干事项
  7. 本文为 2021 年 5 月知识总结
  8. ubuntu下的jdk进行升级_Ubuntu下JDK升级1.7
  9. LXM音频处理软件 使用说明书
  10. 计算机基础 键盘认识,电脑入门(八)、认识键盘及操作
  11. java 随机生成姓名_生成随机中文姓名java程序.pdf
  12. php如何给注册页面加验证码,网站注册页面如何添加验证码注册登录
  13. 卷积神经网络 —— 图像识别与深度学习
  14. CPU、MPU、MCU和SOC还傻傻分不清楚 看这篇文章就够了
  15. 人人都是架构师:分布式系统架构落地与瓶颈突破 - china-pub网上书店
  16. 第二周:1.逆序的三位数(5分)(题目来源中国大学MOOC)
  17. c语言用户态锁使用,用户态自旋锁、读写自旋锁及互斥锁
  18. 【数字图像处理】前期准备工作,库的安装(skimage库的安装!)
  19. C#SpinWait和volatile一点温习
  20. ASO优化如何做?这几个技巧你绝对要了解

热门文章

  1. JavaScript:jklyDB
  2. [原创]IPV4分组的格式
  3. IOS开发ui篇-UITableviewcell的性能问题
  4. Leetcode 363.矩形区域不超过k的最大数值和
  5. Maven常见异常及解决方法---测试代码编译错误
  6. Java--UI--弹出对话框
  7. 【python】获取http响应
  8. hdu-5495 LCS(置换)
  9. java-线程-使用阻塞队列(BlockingQueue)控制线程通信
  10. FPGA同步复位异步复位