当前位置: 首页 > news >正文

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

658.找到K个最接近的元素

image-20231112125748719

方法一:二分查找+双指针

  • 假设数组长度为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个最接近的元素 方法一&#xff1a;二分查找双指针 假设数组长度为n&#xff0c;数组arr已经按照升序排序&#xff0c;可以将数组arr分为两部分&#xff0c;前一部分所有元素[0,left]都小于x&#xff0c;后一部分[right,n-1]都大于等于x&#xff0c;left与right都可以…...

新方向!文心一言X具身智能,用LLM大模型驱动智能小车

具身智能已成为近年来研究的热点领域之一。具身智能强调将智能体与实体环境相结合&#xff0c;通过智能体与环境的交互&#xff0c;来感知和理解世界&#xff0c;最终实现在真实环境中的自主决策和运动控制。 如何基于文心大模型&#xff0c;低成本入门“具身智能”&#xff0…...

mysql.sock找不到怎么解决?

当我们连接mysql时找不到mysql.sock的时候会出现下列情况&#xff1a; cant connect to mysql server through socket /tmp/mysql.sock 解决方法&#xff1a; &#xff08;1&#xff09;找到mysql.sock 使用 find / -name mysql.sock 进行寻找。 如果找不到&#xff0c;那…...

微信小程序刷新当前页面(亲测有效)

有个小功能点&#xff0c;需要刷新当前页面&#xff0c;搜索了很多地方&#xff0c;发现很多搜索的结果其实并不准确。 有的调用的是this.onLoad方法&#xff0c;有的是调用的是this.onReady方法。其实都不能满足我的要求&#xff0c;其实我就只是想刷新下当前页面&#xff0c;…...

通过拉普拉斯特征映射降维

拉普拉斯特征映射&#xff08;Laplacian Eigenmaps&#xff09;&#xff0c;主要包括拉普拉斯特征映射&#xff08;Laplacian Eigenmaps&#xff09;使用实例、应用技巧、基本知识点总结和需要注意事项&#xff0c;具有一定的参考价值&#xff0c;需要的朋友可以参考一下。 1 …...

【信息安全原理】——传输层安全(学习笔记)

&#x1f4d6; 前言&#xff1a;为保证网络应用&#xff0c;特别是应用广泛的Web应用数据传输的安全性&#xff08;机密性、完整性和真实性&#xff09;&#xff0c;可以在多个网络层次上采取安全措施。本篇主要介绍传输层提供应用数据安全传输服务的协议&#xff0c;包括&…...

GBDT减少模型偏差、随机森林减小模型方差

1、Adaboost算法原理&#xff0c;优缺点&#xff1a; 理论上任何学习器都可以用于Adaboost.但一般来说&#xff0c;使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树&#xff0c;Adaboost分类用了CART分类树&#xff0c;而Adaboost回归用了CART回归树。 Adaboost…...

使用IDEA工具处理git合并后的冲突的细节

使用 IDEA 处理合并(merge) 使用IDEA处理git合并如果遇到冲突&#xff0c;对冲突文件的不冲突部分需要处理吗&#xff1f;会自动将双方不冲突的部分合并吗&#xff1f; 比如如下&#xff0c;使用 IDEA 合并 branch1 到 branch2 分支&#xff0c;出现了冲突&#xff0c;如下图…...

快速下载ChatGLM系列模型

1. 说明与步骤 在无法访问huggingface的网络环境下&#xff08;或者是网速不够好时&#xff09;&#xff0c;&#xff08;目前&#xff09;还可以使用参考1中清华云盘的链接来下载&#xff0c;在linux下可以直接用如下wget命令来下载最耗时的模型部分。注意还需要把模型的.py等…...

【数据结构】顺序表 | 详细讲解

在计算机中主要有两种基本的存储结构用于存放线性表&#xff1a;顺序存储结构和链式存储结构。本篇文章介绍采用顺序存储的结构实现线性表的存储。 顺序存储定义 线性表的顺序存储结构&#xff0c;指的是一段地址连续的存储单元依次存储链性表的数据元素。 线性表的&#xf…...

100天精通风控建模(原理+Python实现)——第1天:什么是风控建模?

风控模型已在各大银行和公司都实际运用于业务,用于营销和风险控制等。本文以视频的形式阐述什么是风控建模,并提供风控建模原理和Python实现文章清单。首先了解什么是风控建模? 下文梳理风控模型搭建的原理和Python实现,按顺序做成清单的形式,点击即可进入相应文章链接。方…...

HTML转义字符

HTML&#xff0c;XML文件中存在部分字符作为标志字符无法作为文本内容使用&#xff0c;如< >&#xff0c;如果想在文本中输出&#xff0c;可使用转义字符。 < 的转义字符为 " < " > 的转义字符为 " > " <TextView.... ....android:t…...

【STM32】

STM32 1 CMSIS1.1 概述1.2 CMSIS 应用程序文件描述 2 库2.1 简介2.2 标准外设库&#xff08;standrd Peripheral Libraries&#xff09;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盘打不开&#xff0c;可按下图&#xff0c;设置&#xff1a;winR→gpedit.msc&#xff1b;配置“管理模板”→“系统”→“可移动存储访问”→“所有可移动存储类”。 然后&#xff0c;选择“未配置”&#xff0c;如下图...

SpringCloud 微服务全栈体系(十三)

第十一章 分布式搜索引擎 elasticsearch 二、索引库操作 索引库就类似数据库表&#xff0c;mapping 映射就类似表的结构。 我们要向 es 中存储数据&#xff0c;必须先创建“库”和“表”。 1. mapping 映射属性 mapping 是对索引库中文档的约束&#xff0c;常见的 mapping …...

ROC 曲线详解

前言 ROC 曲线是一种坐标图式的分析工具&#xff0c;是由二战中的电子和雷达工程师发明的&#xff0c;发明之初是用来侦测敌军飞机、船舰&#xff0c;后来被应用于医学、生物学、犯罪心理学。 如今&#xff0c;ROC 曲线已经被广泛应用于机器学习领域的模型评估&#xff0c;说…...

113.路径总和II

原题链接&#xff1a;113.路径总和II 需复刷 思路&#xff1a; 跟112.路径总和不同&#xff0c;该题是要你找出所有相同的路径&#xff0c;那么此时就要注意存储&#xff0c;递归和回溯了。 全代码&#xff1a; class Solution { public:vector<vector<int>> re…...

【Linux】WSL安装Kali及基本操作

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍WSL安装Kali及基本操作。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路…...

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 令牌&#xff0c;可用于访问所有 admin API&#xff0c;通过 2.x 版本中添加的参数导致远程执行 LUA 代码。 漏洞环境及利用 启动docker环境 访问9080端口 通过 admin api…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

Appium下载安装配置保姆教程(图文详解)

目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...