执行用时 : 508 ms, 在K Closest Points to Origin的C++提交中击败了58.97% 的用户
内存消耗 : 39.3 MB, 在K Closest Points to Origin的C++提交中击败了77.94% 的用户
一开始以为可以直接用multiset过,想了一下好像不行,类似于结构体排序,选出最小的前K个就可以。
class Solution {
public:
static bool check( vector<int>& pointsa , vector<int>& pointsb ){
long long numa = 0 , numb = 0 ;
for( int i = 0 ; i < pointsa.size() ; i++ ){
numa += pointsa[i] * pointsa[i];
}
for( int i = 0 ; i < pointsb.size() ; i++ ){
numb += pointsb[i] * pointsb[i];
}
return numa < numb;
}
vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
// multiset<long long>flag;
vector< vector<int> >flag;
sort( points.begin() , points.end() , check );
for( int i = 0 ; i < K ; i++ ) flag.emplace_back( points[i] );
return flag;
}
};