查看: 3945| 回复: 12
跳转到指定楼层
上一主题 下一主题
收起左侧

求教一道题:c++一个2维平面上有一个点P0和其他一堆点(n个),找出距离P0最近的 ...

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
求教大家一道题,c++,如下:
一个 2维平面上有一个点 P0 和 其他一堆点(n个),找出距离 P0 最近的 k 个点。P0点以及其余N个点的坐标已知,N个点的坐标存在一个二维vector<pair<int,int>>& pts里,P0点的坐标为pair<int,int>& p0,找到距离P0最近的K个点。函数头如下:

vector<pair<int,int>> findKNearstPoint( vector<pair<int,int>>& pts, pair<int,int>& p0, int k ) {}
不会做,请教大家了~

上一篇:请教 leetcode Unique Path II 变种,带障碍和jump point
下一篇:lc的easy和medium的题目
推荐
LumiG 2017-2-15 19:20:06 | 只看该作者
全局:
为什么会没有思路?可以先想想暴力方法的对吧。求k个最近的点,也就是找k个距离最短的点。你是不是可以先把n个点的距离都算出来,再找最近的。也就是一共n个距离里找k个最小的对吧。然后topk会做吧?

是不是很自然,LZ看题别慌啊,这样的题都毫无思路话,再多写写代码吧。
回复

使用道具 举报

推荐
qich 2017-2-22 10:16:56 | 只看该作者
全局:
Ariel_Dang 发表于 2017-2-22 03:12
请问建堆是什么意思?是不是就是先暴力计算出全部点的距离,然后排序找出前K个?

我猜他的意思可能是堆排序。不过堆排效率应该比快排低吧,所以有可能我还是理解错了。
回复

使用道具 举报

推荐
xxmen 2017-2-22 11:12:09 | 只看该作者
全局:
Ariel_Dang 发表于 2017-2-22 03:12
请问建堆是什么意思?是不是就是先暴力计算出全部点的距离,然后排序找出前K个?

开一个大小为K的堆,计算出一个距离后就扔进堆里,复杂度NlogK。
回复

使用道具 举报

🔗
ivanyang 2017-2-15 12:30:33 | 只看该作者
全局:
计算出距离后,建堆
回复

使用道具 举报

🔗
AtEase93 2017-2-15 13:04:03 | 只看该作者
全局:
投楼上一票,ps:直接用距离的平方,别开根号,考虑overflow,use long instead of int
回复

使用道具 举报

🔗
lixin67 2017-2-15 23:11:43 | 只看该作者
全局:
最直接就是暴力搞就好了吧
回复

使用道具 举报

🔗
wowmomsos 2017-2-16 01:45:36 | 只看该作者
全局:
平均O(n)的算法:随机partition
回复

使用道具 举报

🔗
 楼主| Ariel_Dang 2017-2-22 03:12:57 | 只看该作者
全局:
ivanyang 发表于 2017-2-15 12:30
计算出距离后,建堆

请问建堆是什么意思?是不是就是先暴力计算出全部点的距离,然后排序找出前K个?
回复

使用道具 举报

🔗
qich 2017-2-22 10:18:53 | 只看该作者
全局:
看着这个题不知怎的就想到了聚类算法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表