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

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

给定一个 排序好 的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。

整数 a 比整数 b 更接近 x 需要满足:

|a - x| < |b - x| 或者
|a - x| == |b - x| 且 a < b

示例 1:

输入:arr = [1,2,3,4,5], k = 4, x = 3
输出:[1,2,3,4]
示例 2:

输入:arr = [1,1,2,3,4,5], k = 4, x = -1
输出:[1,1,2,3]

提示:

1 <= k <= arr.length
1 <= arr.length <= 104^44
arr 按 升序 排列
-104^44 <= arr[i], x <= 104^44

相向双指针,我们需要从arr里删去arr.size()-k个元素:

class Solution {
public:vector<int> findClosestElements(vector<int>& arr, int k, int x) {int left = 0;int right = arr.size() - 1;int deleteNum = 0;while (left < right) {if (deleteNum == arr.size() - k) {break;}if (abs(arr[left] - x) > abs(arr[right] - x)) {++left;} else {--right;}++deleteNum;}return vector<int>(arr.begin() + left, arr.begin() + right + 1);}
};

如果arr的长度为n,则此算法时间复杂度为O(n - k),空间复杂度为O(1)。

http://www.lryc.cn/news/596006.html

相关文章:

  • Linux下的EtherCAT主站环境搭建和通信测试
  • ZooKeeper学习专栏(五):Java客户端开发(原生API)详解
  • 小米视觉算法面试30问全景精解
  • Linux--指令初识
  • RxSwift 核心解析
  • 鸿蒙ArkTS多环境API管理与安全签名方案实践
  • 【React-Three-Fiber实践】放弃Shader!用顶点颜色实现高性能3D可视化
  • 学习做精准、自动化、高效的 GEO优化系统
  • 水电站自动化升级:Modbus TCP与DeviceNet的跨协议协同应用
  • 使用Minio后处理图片回显问题
  • 2025乐彩V8影视系统技术解析:双端原生架构与双H5免签封装实战 双端原生+双H5免签封装+TV级性能优化,一套代码打通全终端生态
  • TDengine 计算百分位函数使用手册
  • 【LINUX】Centos 9使用nmcli更改IP
  • 【SpringAI实战】实现仿DeepSeek页面对话机器人
  • 基于FastMCP创建MCP服务器的小白级教程
  • libgmp库(GNU高精度算术库)介绍
  • Elasticsearch 学习笔记
  • Doxygen生成接口文档
  • Hadoop调度器深度解析:FairScheduler与CapacityScheduler的优化策略
  • 运维实战:100条常用SQL语句,涵盖基础查询、数据操作、表管理、索引视图、连接查询、子查询、日期处理、字符串操作等核心操作,建议收藏!
  • Android常用的adb和logcat命令
  • DOM/事件高级
  • ZooKeeper学习专栏(六):集群模式部署与解析
  • Java中内存屏障在volatile和sychronized的应用
  • Apache Ignite 中乐观事务(OPTIMISTIC Transactions)的工作机制
  • 【Go语言-Day 23】接口的进阶之道:空接口、类型断言与 Type Switch 详解
  • TTL+日志的MDC实现简易链路追踪
  • 【从0-1的JavaScript】第2篇:JS对象的创建、使用已经内置对象
  • 操作系统 —— A / 概述
  • API网关原理与使用场景详解