Find K Closest Elements LeetCode solution in C++

1
class Solution {
2
public:
3
static bool cmp(pair<int, int> &p1, pair<int, int> &p2) {
4
if (p1.first == p2.first) // both having equal abs diff
5
{
6
return p1.second < p2.second;
7
}
8
return p1.first < p2.first;
9
}
10
vector<int> findClosestElements(vector<int> &arr, int k, int x) {
11
vector<pair<int, int>> v; // abs diff , ele
12

13
for (int i = 0; i < arr.size(); i++) {
14
v.push_back(make_pair(abs(arr[i] - x), arr[i]));
15
}
16

17
sort(v.begin(), v.end(), cmp);
18
vector<int> ans;
19
for (int i = 0; i < k; i++) {
20
ans.push_back(v[i].second);
21
}
22
sort(ans.begin(), ans.end());
23
return ans;
24
}
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0