Tre*_*001 7 algorithm performance computational-geometry
我有一系列点,我的目标是选择两个点,以便最大化这两个点(一个代表左下角,另一个代表右上角)形成的矩形面积。
我可以通过执行两个 for 循环并计算每个可能的区域来在 O(n^2) 中完成此操作,但我认为必须有一个更有效的解决方案:
max_area = 0
for p1 in points:
for p2 in points:
area = p2[0]p2[1] + p1[0]p1[1] - p2[1]p1[0] - p2[0]p1[1]
if area > max_area:
max_area = area
Run Code Online (Sandbox Code Playgroud)
很明显,我想以原点 (0,0) 最大化第二个点的面积(因此 p2[0]p2[1]),但我不确定如何继续。
分而治之。
注意:该算法假定矩形是轴对齐的。
我没有计算过这个算法的复杂度。看起来 O(n log(n))。