【二分】第k个缺失的数

第K个缺失的数

链接

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/kth-missing-positive-number/

题目

题解

二段性:分析题目排序数组寻找缺失的第k个数,我们针对某个元素来分析a[i],到a[i]位置时我们可以根据已排序的数组特性求出到i位置时缺失了几个数,因为元素都是从>=1开始的,如果没有缺失那么a[i]-1 - i = 0,如果存在缺失那么a[i] - i - 1应该就是到i位置时缺失的数的个数,根据每个位置缺失的数的个数我们可以将数组分为缺失个数小于k和大于等于k,我们只需要找到大于等于k的这段区间的左端点或者找到小于k区间的右端点,也就是找到k所介于的那个两个数值

找到这两个数,我们就可以确定缺失的第k个数了,此时我们假设左边的元素位x,右边为y,我们可以求出左边这个元素结尾时缺少多少个数x-l-1,然后只需要在x的基础上加上要求第k个缺失的数减去到左边位置缺失的数就求出第k个缺失的数

代码
class Solution {// 左区间右端点public int findKthPositive(int[] arr, int k) {if (arr[0] > k) return k;int l = 0, r = arr.length - 1;while (l < r) {int mid = l + (r - l + 1) / 2;if (arr[mid] - mid - 1 < k) l = mid;else r = mid - 1;}return arr[l] + (k - (arr[l] - (l) - 1));}// 左区间右端点public int findKthPositive(int[] arr, int k) {if (arr[0] > k) return k;int l = 0, r = arr.length;while (l < r) {int mid = l + (r - l) / 2;if (arr[mid] - mid - 1>= k) r = mid;else l = mid + 1;}return arr[l - 1] + (k - (arr[l - 1] - (l - 1) - 1));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/505787.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VirtualBox 桥接网卡 未指定 “未能启动虚拟电脑Ubuntu,由于下述物理网卡未找到:”

解决办法&#xff0c;安装虚拟网卡&#xff0c;win11查找方式&#xff1a;控制面板→网络和共享中心→更改适配器设置 此时出现下面情况就算安装成功 但是如果报错&#xff1a;找不到指定的模块 则按下面步骤删除干净垃圾重新上面操作 先安装CCleaner, 链接:CCleaner Makes Y…

QT6 libModbus 用于ModbusTcp客户端读写服务端

虽然在以前的文章中多次描述过,那么本文使用开源库libModbus,可得到更好的性能&#xff0c;也可移植到各种平台。 性能&#xff1a;读1次和写1次约各用时2ms。 分别创建了读和写各1个连接指针&#xff0c;用于读100个寄存器和写100个寄存器&#xff0c;读写分离。 客户端&am…

Grid-Based Continuous Normal Representation for Anomaly Detection 论文阅读

Grid-Based Continuous Normal Representation for Anomaly Detection 论文阅读 摘要简介方法3.1 Normal Representation3.2 Feature Refinement3.3 Training and Inference 4 实验结果5 总结 文章信息&#xff1a; 原文链接&#xff1a;https://arxiv.org/abs/2402.18293 源码…

二、IO接口时序分析基本原理和意义

前言&#xff1a;前面内容介绍了时序分析的基本原理&#xff0c;着重学习了芯片内部的两级寄存器之间的时序分析模型&#xff0c;本篇内容针对IO部分的时序分析模型展开讨论讲解。 文章目录 一、IO接口时序分析的基本模型&#xff08;源同步&#xff09;二、INPUT DELAY 时序分…

java-ssm-jsp-宠物护理预定系统

java-ssm-jsp-宠物护理预定系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

Vue开发实例(一)Vue环境搭建第一个项目

Vue环境搭建&第一个项目 一、环境搭建二、安装Vue脚手架三、创建Vue项目 一、环境搭建 下载方式从官网下载&#xff1a;http://nodejs.cn/download/ 建议下载v12.16.0版本以上的&#xff0c;因为版本低无法创建Vue的脚手架 检验是否安装成功 配置环境变量 新增NODE_HOME&…

数据结构——Top-k问题

Top-k问题 方法一&#xff1a;堆排序&#xff08;升序&#xff09;&#xff08;时间复杂度O(N*logN)&#xff09;向上调整建堆&#xff08;时间复杂度&#xff1a;O(N * logN) &#xff09;向下调整建堆&#xff08;时间复杂度&#xff1a;O(N) &#xff09;堆排序代码 方法二&…

怎么优雅地访问ChatGPT

ChatGPT&#xff0c;这颗璀璨的智能结晶&#xff0c;在2022年岁末之际&#xff0c;由OpenAI实验室倾力铸就&#xff0c;犹如夜空中跃动的智慧星辰&#xff0c;点亮了人工智能领域的新纪元。犹如汪洋中的一座灯塔&#xff0c;ChatGPT以其独特的智慧光辉引人注目&#xff0c;然而…

SPA首屏加载慢的优化方案

1、什么是首屏加载&#xff1f; 首屏加载时间主要看FCP(First Contentful Paint)这个指标&#xff0c;它指的是浏览器从响应用户输入网址地址&#xff0c;到首屏内容渲染完成的时间&#xff0c;此时整个网页不一定要全部渲染完成&#xff0c;但需要展示当前视窗需要的内容 首…

运筹学_1.2线性规划问题的几何意义

1.2线性规划问题的几何意义 一、凸集的基本概念二、由线性规划问题的几何意义、定理得出的几点结论三、引出单纯形法的解题步骤 一、凸集的基本概念 通俗来说&#xff0c;一个图形上任意两个点的连线上的点全部存在于这个图形中 二、由线性规划问题的几何意义、定理得出的几点结…

基于springboot+vue的流浪宠物管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Ubuntu将c++编译成.so文件并测试

一、准备cpp和h文件 创建test.cpp 在cpp中定义相加的函数funcAdd&#xff0c;给出函数的细节代码 #include <iostream> using namespace std;int funcAdd(int x, int y) {return xy; }创建test.h 在h中声明定义的函数&#xff0c;不需要任何细节 #ifndef __TEST__ #…