LeetCode 973. K най-близки точки до произхода

class Solution {
public:
    vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
        vector<pair<vector<int>, int>> temp;
        vector<vector<int>> res;
        for (auto elem : points) {
            int dist = elem[0]*elem[0] + elem[1]*elem[1];
            temp.push_back(pair(elem, dist));
        }
        
        sort(temp.begin(), temp.end(), [](pair<vector<int>, int>& a, pair<vector<int>, int>& b){return a.second<b.second;});
        
        for (int i =0; i<K; i++) {
            res.push_back(temp[i].first);
        }
        
        return res;
    }
};
  1. използвайте pair<vector<int>, int> структура от данни, където first е местоположението на мрежата, а second е разстоянието от началото.
  2. използвайте функцията sort, съчетана с функцията за сравнение lambda като cmp, за да сортирате temp където запазва всички pair от дадени точки на местоположение и съответното им разстояние до началото.
  3. връща първите k елемента като резултати.

Версия с чист код с подобна идея може да се отнася до тук от lee215

vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
        sort(points.begin(), points.end(), [](vector<int>& a, vector<int>& b) {
            return a[0] * a[0] + a[1] * a[1] < b[0] * b[0] + b[1] * b[1];
        });
        return vector<vector<int>>(points.begin(), points.begin() + K);
    }