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

658.找到K个最接近的元素(双指针)

目录

  • 题目
  • 过程

题目

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

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

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

过程

class Solution {
public:
    vector<int> findClosestElements(vector<int>& arr, int k, int x) {
        vector<int> a;
        int n=arr.size();
        int l=0;
        int r=n-1;
        while(r-l+1>k){
            if(abs(arr[l]-x)<=abs(arr[r]-x)){
                r--;
            }else{
                l++;
            }
        }
        for(int i=l;i<=r;i++){
            a.push_back(arr[i]);
        }
        return a;
    }
};

我的双指针法。就是两端向中间搜寻K个答案。只要中间有K个解就跳出循环。对于两边的前进过程就是,当前哪边差的绝对值更大,就舍去哪一个,如果两边差的绝对值相同,就舍去右边的。最后将找到的索引位置,插入需要返回的数组中。


http://www.kler.cn/a/422187.html

相关文章:

  • 【深度学习】—CNN卷积神经网络 从原理到实现
  • 社区团购中 2+1 链动模式商城小程序的创新融合与发展策略研究
  • Linux 网卡收包流程如下
  • 手机ip地址取决于什么?可以随便改吗
  • 20240921解决使用PotPlayer在WIN10电脑播放4K分辨率10bit的视频出现偏色的问题
  • stable diffusion实践操作-大模型介绍:SD的发展历史,SD1.5和SDXL之间的差别
  • DVWA靶场——XSS(Stored)
  • 数据库python连接测试
  • 学习笔记050——SpringBoot学习1
  • docker使用(镜像、容器)
  • sheng的学习笔记-【中】【吴恩达课后测验】Course 5 - 序列模型 - 第三周测验 - 序列模型与注意力机制
  • 用于LiDAR测量的1.58um单芯片MOPA(一)
  • Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档
  • [Redis#9] stream | geospatial | HyperLogLog | bitmaps | bitfields
  • Create Stunning Word Clouds with Ease!
  • 【短视频矩阵系统==saas技术开发】
  • 移动机器人课程建图实验-ROSbug汇总
  • C. Raspberries
  • esp8266 编译、烧录环境搭建
  • 5G学习笔记之PRACH