最大值发现问题:在二维空间中,当且仅当a1> b1和a2> b2时,我们将说点A =(a1,a2)支配点B =(b1,b2)。如果没有其他点支配Apoint,则Apoint称为最大值。设计一种算法来查找给定n个点中的所有最大点。 (使用分而治之的方法来获得O(nlogn)复杂度) 例如,附加图像中的圆圈点是最大点
答案 0 :(得分:2)
如果我有一个按照X坐标顺序排列的最大点列表,Y打破了关系,我可以沿着减少X的方向向下行进,Y应该在每个阶段增加。如果没有,我可以删除Y不足以重新获得最大点列表的点。这会花费时间与点数成线性关系。
这意味着如果我有一个n log n递归排序算法,我可以让每个递归调用标记它返回的那些中的最大点,或者返回最大点作为返回值的附加部分,并生成一个合并并更正最大点列表,按顺序为其调用者。因此,您只需要采用自己喜欢的排序算法并稍微修改一下即可解决问题。