图片做记录片的是哪个网站,哈尔滨网页制作要多少钱,长沙旅游景点大全排名,浪漫免费表白网站给定一个 排序好 的数组 arr #xff0c;两个整数 k 和 x #xff0c;从数组中找到最靠近 x#xff08;两数之差最小#xff09;的 k 个数。返回的结果必须要是按升序排好的。
整数 a 比整数 b 更接近 x 需要满足#xff1a;
|a - x| |b - x| 或者
|a - x| |b - x| …给定一个 排序好 的数组 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:vectorint findClosestElements(vectorint 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 vectorint(arr.begin() left, arr.begin() right 1);}
};如果arr的长度为n则此算法时间复杂度为O(n - k)空间复杂度为O(1)。