二分查找17(Leetcode1539第k个缺失的正整数)-2

news/2024/11/20 14:20:40/

代码:

这个是用二分查找的版本

可以从arr[i] 的值和i两个变量直接获得到i为止缺失了多少个正整数

class Solution {public int findKthPositive(int[] arr, int k) {int n = arr.length;int l=0,r=n-1;while(l<=r){int m = l + (r - l + 1)/2;if(arr[m]-m-1==k){l = m;r = m;break;}else if(arr[m]-m-1<k){l = m + 1;}else{r = m - 1;}}while(l-1>0&&l<n&&arr[l]== arr[l-1]+1){l--;}if(l>0){return k - (arr[l - 1] - (l - 1) - 1) + arr[l - 1];}else if(arr[0]>k)return k;else return k-1; }
}


http://www.ppmy.cn/news/1260330.html

相关文章

【OpenGL】Clion配置

OpenGL简介 OpenGL&#xff08;Open Graphics Library&#xff09;是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像&#xff08;二维的亦可&#xff09;&#xff0c;是一个功能强大&#xff0c;调用方便的底层图形库。OpenGL是行业领域中…

光学雨量传感器-雨量监测小助手

在我们的日常生活中&#xff0c;无论是城市还是农村&#xff0c;雨水都是我们赖以生存的重要资源之一。然而&#xff0c;随着全球气候变化和城市化进程的加速&#xff0c;雨水的分布和量级正在发生着巨大的变化&#xff0c;给我们的生活和农业生产带来了巨大的挑战。 一、光学…

【Flink on k8s】- 2 - 简要介绍 Kubernetes

目录 一、Kubernetes 概述 二、历史版本演进 三、相对主要的优劣势 四、Kubernetes 的基本特性

网络和Linux网络_7(传输层)UDP和TCP协议(端口号+确认应答+超时重传+三次握手四次挥手)

目录 1. 重看端口号 1.1 端口号的概念 1.2 端口号的划分 2. 重看UDP协议 2.1 UDP协议格式 2.2 UDP的特点 3. 重看TCP协议 3.1 TCP协议格式 3.2 TCP的解包分用 3.3 TCP的可靠性及机制 3.3.1 确认应答ACK机制 3.3.2 超时重传机制 3.3.3 连接管理机制&#xff08;三次…

copilot的使用

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 &#x1f324;️安装和配置编辑器&a…

【Vue第2章】Vue组件化编程

目录 2.1 模块与组件、模块化与组件化 2.1.1 模块 2.1.2 组件 2.1.3 模块化 2.1.4 组件化 2.2 非单文件组件 2.3.1 代码 2.3.1.1 基本使用 2.3.1.2 几个注意点 2.3.1.3 组件的嵌套 2.3.1.4 VueComponent 2.3.1.5 一个重要的内置关系 2.3 单文件组件 2.3.1 一个.v…

docker安装informix

docker安装informix 通过docker下载镜像 docker pull ibmcom/informix-developer-database 启动容器 docker run -it -d --name informix --privileged -p 9088:9088 -p 9089:9089 -p 27017:27017 -p 27018:27018 -p 27883:27883 -e LICENSEaccept ibmcom/informix-develope…

【从零开始学习JVM | 第四篇】类加载器的分类以及双亲委派机制

前言&#xff1a; 在Java编程中&#xff0c;类加载器(Class Loader)扮演着重要的角色。类加载器负责加载Java字节码并将其转换为可执行对象&#xff0c;使得我们能够在应用程序中使用各种类和资源。Java类加载器的设计和实现旨在支持动态扩展和模块化编程&#xff0c;为Java语…