leetcode 658. Find K Closest Elements
Posted いいえ敗者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 658. Find K Closest Elements相关的知识,希望对你有一定的参考价值。
Given a sorted array, two integers k
and x
, find the k
closest elements to x
in the array. The result should also be sorted in ascending order. If there is a tie, the smaller elements are always preferred.
Example 1:
Input: [1,2,3,4,5], k=4, x=3 Output: [1,2,3,4]
Example 2:
Input: [1,2,3,4,5], k=4, x=-1 Output: [1,2,3,4]
Note:
- The value k is positive and will always be smaller than the length of the sorted array.
- Length of the given array is positive and will not exceed 104
- Absolute value of elements in the array and x will not exceed 104
题目大意:求离x最近的k元素,注意输出的是值,而不是下标。并且按照升序列输出。
麻烦不要再爬我博客了。“IT大道“你妹的。
思路就是,每个元素与x做差并记录下标,按差值排序,然后再找到原来的数组的值,排序输出就行了、
class Solution { public: vector<int> findClosestElements(vector<int>& arr, int k, int x) { int n = arr.size(); vector<pair<int, int>> vp; for (int i = 0; i < n; ++i) { int w = abs(arr[i] - x); vp.push_back({w,i}); } sort(vp.begin(), vp.end()); vector<int>v; for (int i = 0; i < k ; ++i) { v.push_back(arr[vp[i].second]); } sort(v.begin(), v.end()); return v; } };
以上是关于leetcode 658. Find K Closest Elements的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 658: Find K Closest Elements
[Leetcode]658.Find K Closest Elements
(双指针二分Binary Search) leetcode 658. Find K closest Elements