当前位置: 首页 > 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.dtcms.com/a/292370.html

相关文章:

  • .NET使用EPPlus导出EXCEL的接口中,文件流缺少文件名信息
  • Unity笔记——事件中心
  • 力扣-300.最长递增子序列
  • 以太坊网络发展分析:技术升级与市场动态的双重驱动
  • 快手开源 Kwaipilot-AutoThink 思考模型,有效解决过度思考问题
  • Cy3-COOH 花菁染料Cy3-羧基
  • linux-日志服务
  • Gitlab-CI实现组件自动推送
  • 常用 Flutter 命令大全:从开发到发布全流程总结
  • 检索增强型生成助力无人机精准数学推理!RAG-UAV:基于RAG的复杂算术推理方法
  • Lua语言
  • MybatisPlus-16.扩展功能-枚举处理器
  • ORACLE DATABASE 11.2.0.4 RAC Install
  • Vue-22-通过flask接口提供的数据使用plotly.js绘图(一)
  • Oracle定时清理归档日志
  • RAG(检索增强生成)里的文档管理
  • 二次供水管理系统:远程监控+智能调控+故障预警解决方案
  • 用ffmpeg 进行视频的拼接
  • 【指南】网络安全领域:HW 行动(国家网络安全攻防演练)是什么?
  • 一些Avalonia与WPF内容的对应关系和不同用法
  • 单一职责原则(SRP):构建高质量软件的基石
  • Java 并发性深度解析
  • JS WebAPIs DOM节点概述
  • 网络层传输
  • 4G车载录像机的作用详解:提升行车安全与智能管理的核心技术
  • 数字签名(Digital Signature)
  • XSS内容分享
  • Windows 环境排除 Windows Defender 对指定路径或进程的影响
  • 在vscode 使用 remote-ssh
  • 【接口自动化】掌握接口自动化:核心概念讲解(理论知识)