活跃农民
- 积分
- 639
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2015-3-20
- 最后登录
- 1970-1-1
|
今天做了地里分享的亚麻oa, 有点像https://www.lintcode.com/problem/k-closest-points/description
,用priority queue,把自己的解法也贴出来~~~
#include <iostream>
#include <vector>
#include <math.h>
#include <queue>
using namespace std;
using my_pair_t= pair<pair<int, int>, double>;
using my_container_t=vector<my_pair_t>;
double getDistance(pair<int, int> location);
vector<pair<int, int>> kpoint(int numDestinations, vector<pair<int, int>> allLocations, int numDeliveries) {
auto my_comp = [](const my_pair_t &e1, const my_pair_t &e2) { return e1.second > e2.second; };
priority_queue<my_pair_t, my_container_t, decltype(my_comp)> queue1(my_comp);
vector<pair<int, int>> res;
for (auto i: allLocations) {
queue1.push(make_pair(i, getDistance(i)));
}
for (int i = 0; i < numDeliveries; i++) {
const auto &p = queue1.top();
res.push_back(p.first);
queue1.pop();
}
return res;
}
double getDistance(pair<int, int> location) {
double distance = sqrt(pow(location.first, 2) + pow(location.second, 2));
return distance;
} |
|