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

find closest k point 问题

全局:

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

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

x
这道题谁能帮我解释下
                PriorityQueue<Point> queue = new PriorityQueue<>(k, new Comparator<Point>() {
                        public int compare(Point p1, Point p2) {
                                return calDistance(center, p1) - calDistance(center, p2);
                        }
                });
        private int calDistance(Point p1, Point p2) {
                return (p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y);
        }
http://bgmeow.xyz/codes/KNearest.java 这是答案地址
我不理解为什么priorityQueue要对比p1和p2 而不是center和p 还有calDistance 我也有点不理解 求解答

上一篇:一点建议希望大家发面经时不要再说题号即是暗语也不要
下一篇:大概刷多少题就可以去尝试面试一般的公司了?
🔗
gluten 2017-10-7 12:17:19 | 只看该作者
全局:
http://neutrofoton.github.io/blog/2016/12/29/c-plus-plus-priority-queue-with-comparator/
http://en.cppreference.com/w/cpp/language/scope
回复

使用道具 举报

🔗
chubaka123 2017-10-10 11:15:23 | 只看该作者
全局:
楼主能再说清楚一点吗。。我不理解 你不理解的到底是什么。。。
回复

使用道具 举报

🔗
zsf222 2017-10-13 23:45:47 | 只看该作者
全局:
calDistance就是计算两点间欧式距离。优先队列对象初始化时,需要一个comparator来定义元素之间的序。这个comparator返回的是一个整数,用正负和0来表示大于小于或等于。那么这个问题里面,优先队列的作用是维护距离中心点最近的点。所以优先队列里面的元素p1和p2,就应该按照calDistance(center, p1)和calDistance(center, p2)来比较大小。那么comparator就应该返回这两者的差。(新来的,如果我答得好不知道能否有积分)
回复

使用道具 举报

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

本版积分规则

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