【LeetCode刷题-二分查找】--658.找到K个最接近的元素
658.找到K个最接近的元素

方法一:二分查找+双指针
- 假设数组长度为n,数组arr已经按照升序排序,可以将数组arr分为两部分,前一部分所有元素[0,left]都小于x,后一部分[right,n-1]都大于等于x,left与right都可以通过二分查找获得
- left和right指向的元素都是各自部分最接近x的元素,因此我们可以通过比较left和right指向的元素获取整体最接近x的元素,如果x-arr[left]≤arr[right]-x,则将left-1,否则将right+1,相应地,如果left或right已经越界,那么不考虑对应部分的元素
- 最后,区间[left+1,right-1]的元素就是需要获得的结果
class Solution {public List<Integer> findClosestElements(int[] arr, int k, int x) {int right = binarrySearch(arr,x);int left = right - 1;while(k-->0){if(left < 0){right++;}else if(right >= arr.length){left--;}else if(x - arr[left] <= arr[right] -x){left--;}else{right++;}}List<Integer> ans = new ArrayList<>();for(int i = left+1;i<right;i++){ans.add(arr[i]);}return ans;}public int binarrySearch(int[] arr,int x){int low = 0,high = arr.length - 1;while(low < high){int mid = low + (high - low) / 2;if(arr[mid] >= x){high = mid;}else{low = mid + 1;}}return low;}
}
方法二:二分查找
class Solution {public List<Integer> findClosestElements(int[] arr, int k, int x) {int left = 0,right = arr.length -1;while(right - left + 1>k){if(Math.abs(arr[left] - x) > Math.abs(arr[right] - x)){left++;}else{right--;}}List<Integer> result = new ArrayList<>();for (int i = left; i <= right; i++) {result.add(arr[i]); // 将选定范围内的元素添加到结果列表}return result;}
}
相关文章:
【LeetCode刷题-二分查找】--658.找到K个最接近的元素
658.找到K个最接近的元素 方法一:二分查找双指针 假设数组长度为n,数组arr已经按照升序排序,可以将数组arr分为两部分,前一部分所有元素[0,left]都小于x,后一部分[right,n-1]都大于等于x,left与right都可以…...
新方向!文心一言X具身智能,用LLM大模型驱动智能小车
具身智能已成为近年来研究的热点领域之一。具身智能强调将智能体与实体环境相结合,通过智能体与环境的交互,来感知和理解世界,最终实现在真实环境中的自主决策和运动控制。 如何基于文心大模型,低成本入门“具身智能”࿰…...
mysql.sock找不到怎么解决?
当我们连接mysql时找不到mysql.sock的时候会出现下列情况: cant connect to mysql server through socket /tmp/mysql.sock 解决方法: (1)找到mysql.sock 使用 find / -name mysql.sock 进行寻找。 如果找不到,那…...
微信小程序刷新当前页面(亲测有效)
有个小功能点,需要刷新当前页面,搜索了很多地方,发现很多搜索的结果其实并不准确。 有的调用的是this.onLoad方法,有的是调用的是this.onReady方法。其实都不能满足我的要求,其实我就只是想刷新下当前页面,…...
通过拉普拉斯特征映射降维
拉普拉斯特征映射(Laplacian Eigenmaps),主要包括拉普拉斯特征映射(Laplacian Eigenmaps)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 1 …...
【信息安全原理】——传输层安全(学习笔记)
📖 前言:为保证网络应用,特别是应用广泛的Web应用数据传输的安全性(机密性、完整性和真实性),可以在多个网络层次上采取安全措施。本篇主要介绍传输层提供应用数据安全传输服务的协议,包括&…...
GBDT减少模型偏差、随机森林减小模型方差
1、Adaboost算法原理,优缺点: 理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。 Adaboost…...
使用IDEA工具处理git合并后的冲突的细节
使用 IDEA 处理合并(merge) 使用IDEA处理git合并如果遇到冲突,对冲突文件的不冲突部分需要处理吗?会自动将双方不冲突的部分合并吗? 比如如下,使用 IDEA 合并 branch1 到 branch2 分支,出现了冲突,如下图…...
快速下载ChatGLM系列模型
1. 说明与步骤 在无法访问huggingface的网络环境下(或者是网速不够好时),(目前)还可以使用参考1中清华云盘的链接来下载,在linux下可以直接用如下wget命令来下载最耗时的模型部分。注意还需要把模型的.py等…...
【数据结构】顺序表 | 详细讲解
在计算机中主要有两种基本的存储结构用于存放线性表:顺序存储结构和链式存储结构。本篇文章介绍采用顺序存储的结构实现线性表的存储。 顺序存储定义 线性表的顺序存储结构,指的是一段地址连续的存储单元依次存储链性表的数据元素。 线性表的…...
100天精通风控建模(原理+Python实现)——第1天:什么是风控建模?
风控模型已在各大银行和公司都实际运用于业务,用于营销和风险控制等。本文以视频的形式阐述什么是风控建模,并提供风控建模原理和Python实现文章清单。首先了解什么是风控建模? 下文梳理风控模型搭建的原理和Python实现,按顺序做成清单的形式,点击即可进入相应文章链接。方…...
HTML转义字符
HTML,XML文件中存在部分字符作为标志字符无法作为文本内容使用,如< >,如果想在文本中输出,可使用转义字符。 < 的转义字符为 " < " > 的转义字符为 " > " <TextView.... ....android:t…...
【STM32】
STM32 1 CMSIS1.1 概述1.2 CMSIS 应用程序文件描述 2 库2.1 简介2.2 标准外设库(standrd Peripheral Libraries)2.3 HAL 库2.3.1 目录结构2.3.2 HAL库API函数和变量的命名规则2.3.3 HAL库对寄存器位操作的相关宏定义2.3.4 HAL库回调函数2.3.5 HAL使用注意…...
U盘不可以访问的维护
u盘打不开,可按下图,设置:winR→gpedit.msc;配置“管理模板”→“系统”→“可移动存储访问”→“所有可移动存储类”。 然后,选择“未配置”,如下图...
SpringCloud 微服务全栈体系(十三)
第十一章 分布式搜索引擎 elasticsearch 二、索引库操作 索引库就类似数据库表,mapping 映射就类似表的结构。 我们要向 es 中存储数据,必须先创建“库”和“表”。 1. mapping 映射属性 mapping 是对索引库中文档的约束,常见的 mapping …...
ROC 曲线详解
前言 ROC 曲线是一种坐标图式的分析工具,是由二战中的电子和雷达工程师发明的,发明之初是用来侦测敌军飞机、船舰,后来被应用于医学、生物学、犯罪心理学。 如今,ROC 曲线已经被广泛应用于机器学习领域的模型评估,说…...
113.路径总和II
原题链接:113.路径总和II 需复刷 思路: 跟112.路径总和不同,该题是要你找出所有相同的路径,那么此时就要注意存储,递归和回溯了。 全代码: class Solution { public:vector<vector<int>> re…...
【Linux】WSL安装Kali及基本操作
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍WSL安装Kali及基本操作。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路…...
Linux基础开发工具之调试器gdb
文章目录 1.编译成的可调试的debug版本1.1gcc test.c -o testdebug -g1.2readelf -S testdebug | grep -i debug 2.调试指令2.0quit退出2.1list/l/l 数字: 显示代码2.2run/r运行2.3断点相关1. break num/b num: 设置2. info b: 查看3. d index: 删除4. n: F10逐过程5. p 变量名…...
Apache APISIX 的 Admin API 默认访问令牌漏洞(CVE-2020-13945)漏洞复现
漏洞描述 Apache APISIX 是一个动态、实时、高性能的 API 网关。Apache APISIX 有一个默认的内置 API 令牌,可用于访问所有 admin API,通过 2.x 版本中添加的参数导致远程执行 LUA 代码。 漏洞环境及利用 启动docker环境 访问9080端口 通过 admin api…...
Xilinx DDR4 MIG与Synopsys VIP联仿实战:一个控制器挂4片颗粒的UVM验证平台搭建
Xilinx DDR4 MIG与Synopsys VIP联仿实战:多颗粒验证平台架构设计 在高速存储接口验证领域,DDR4控制器与多颗粒协同工作的场景日益普遍。当我们需要验证一个64位位宽的Xilinx MIG控制器连接4片16位DDR4颗粒的复杂系统时,传统的单颗粒验证方法显…...
Pyfa:EVE Online舰船配置助手,让你的星际舰队规划更高效
Pyfa:EVE Online舰船配置助手,让你的星际舰队规划更高效 【免费下载链接】Pyfa Python fitting assistant, cross-platform fitting tool for EVE Online 项目地址: https://gitcode.com/gh_mirrors/py/Pyfa Pyfa(Python Fitting Assi…...
如何用imFile下载工具提升你的下载效率:完整使用指南
如何用imFile下载工具提升你的下载效率:完整使用指南 【免费下载链接】imfile-desktop A full-featured download manager. 项目地址: https://gitcode.com/gh_mirrors/im/imfile-desktop imFile是一款功能全面的下载管理器,专为解决现代网络下载…...
arXiv订阅进阶玩法:除了邮件,还能用RSS和Python脚本打造你的专属论文追踪器
arXiv订阅进阶玩法:用RSS和Python脚本打造你的专属论文追踪器 每天手动刷新arXiv查看最新论文?对于追求效率的研究者来说,这无异于在已经繁重的科研任务上再添负担。虽然邮件订阅是官方提供的解决方案,但信息过载、分类混乱、被动…...
GLM-4.1V-9B-Bate数据处理管道构建:从MATLAB到AI模型的端到端流程
GLM-4.1V-9B-Bate数据处理管道构建:从MATLAB到AI模型的端到端流程 1. 科研工程中的数据流转痛点 在科研和工程实践中,我们常常面临一个典型困境:数据预处理和分析工具与AI模型之间存在"断层"。MATLAB作为科学计算领域的标配工具&…...
Win11Debloat:Windows 11终极系统优化与隐私保护指南
Win11Debloat:Windows 11终极系统优化与隐私保护指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cus…...
告别ros2 run!用Launch文件一键启动你的多机器人项目(附YAML配置模板)
告别ros2 run!用Launch文件一键启动你的多机器人项目(附YAML配置模板) 在ROS 2开发中,手动逐个启动节点的方式就像用螺丝刀组装汽车——理论上可行,但效率低下且容易出错。当项目规模扩展到多个机器人协同工作时&#…...
淘宝/天猫商家必看:不懂技术也能搞懂的奇门对接原理与ERP/WMS联调避坑指南
淘宝/天猫商家必看:不懂技术也能搞懂的奇门对接原理与ERP/WMS联调避坑指南 作为淘宝/天猫平台的商家,你是否遇到过这样的困扰:代运营的店铺订单信息无法直接获取,导致发货效率低下?或者更换ERP服务商时,需要…...
LumiPixel Canvas Quest性能优化指南:针对低显存GPU的部署与推理技巧
LumiPixel Canvas Quest性能优化指南:针对低显存GPU的部署与推理技巧 1. 为什么需要专项优化? 如果你手头的GPU显存只有16GB或更少,直接运行LumiPixel Canvas Quest这类大型图像生成模型可能会遇到显存不足的问题。常见的情况包括ÿ…...
WarcraftHelper:魔兽争霸3现代化体验全面升级指南
WarcraftHelper:魔兽争霸3现代化体验全面升级指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 在2026年的今天,经典游戏《魔…...
