有m个站和n个住宅,给出每个站和住宅的(x,y)坐标,输出每个住宅的最近站点。
后来,这个问题被推广为从每个住宅中找到k个最近的站点。
我的想法是:对于每个住宅,建立一个到站点的距离堆(自下而上),然后弹出最接近的k个。对所有住宅执行相同的操作。O(n*(m+klogm));
或者,对于每个住宅,建立一个到站点的有序统计树,然后查找具有排名的节点并遍历该节点下面的整个树。对所有住宅执行相同的操作。O(n*(mlogm+logm+k))
是否有更好的选择?是否有基于图形数据结构的解决方案比这更好?
后来,这个问题被推广为从每个住宅中找到k个最近的站点。
我的想法是:对于每个住宅,建立一个到站点的距离堆(自下而上),然后弹出最接近的k个。对所有住宅执行相同的操作。O(n*(m+klogm));
或者,对于每个住宅,建立一个到站点的有序统计树,然后查找具有排名的节点并遍历该节点下面的整个树。对所有住宅执行相同的操作。O(n*(mlogm+logm+k))
是否有更好的选择?是否有基于图形数据结构的解决方案比这更好?