我有一个矩阵(例如[ (0,2) , (0,3) , (1,2) , (2,2) ]
的某些顶点的(x,y)坐标的列表(在c ++中为矢量)。我想计算列表中每对顶点之间的曼哈顿距离。
目前,我正在使用两个循环:
for(int i=0;i<size-1;i++)
{
for(int j=i+1;j<size;j++)
{
dist=abs(v[i][0]-v[j][0])+abs(v[i][1]-v[j][1]);
//Process dist
}
}
此方法的时间复杂度为O(n ^ 2)。有没有更好的方法来做到这一点,并且时间复杂度更低?
答案 0 :(得分:0)
由于输出大小为\Theta(n^2)
,每对曼哈顿距离的复杂度都在O(1)
中,因此您无法再提高复杂度了。