2024-09-28 22:26:01 发布
网友
这个问题就像普通的计数反转问题一样,但现在输入的不是单个数字的列表,而是(x,y)对的列表
对于对的列表[(x1,y1),(x2,y2),(x3,y3),…,(xn,yn)],对(i,j)是反转iffi < j和xi>xj,yi>yj。可以用O(nlognlogn)写算法吗?我尝试了几种方法,但在合并步骤中,列表右半部分的每个元素都必须与左半部分的所有元素进行比较,导致时间复杂度为n平方
i < j
xi>xj
yi>yj
根据x坐标将列表分成两部分left和right。然后,比较两半的最低点(基于它们的y坐标)。有两种情况:
x
left
right
y
xi<xj
yi<yj
O(nlog^2n)
根据
x
坐标将列表分成两部分left
和right
。然后,比较两半的最低点(基于它们的y
坐标)。有两种情况:xi<xj
和yi<yj
李>yi>yj
条件对其左侧的任何点都适用。根据这两种情况更新答案后,您可以删除这两点中的一点并继续处理剩余的排序列表(通过递归求解
left
和right
)。这应该在O(nlog^2n)
中起作用相关问题 更多 >
编程相关推荐