我正在尝试用算法学习时间复杂度。我发现这个问题很有意思,它说:“找出具有给定差异的对”。我理解这个问题并缩小到两个方法:
for( i = 0; i < nimages; i++ )
{
for( j = 0; j < boardSize.height; j++ )
{
for( k = 0; k < boardSize.width; k++ )
{
objectPoints[i].push_back(Point3f(k*squareSize, j*squareSize, 0));
}
}
}
请有人解释哪一个更好实施。谢谢。
如果是参考,我指的是这个问题: http://www.geeksforgeeks.org/count-pairs-difference-equal-k/
答案 0 :(得分:2)
请有人解释哪一个更好实施。
这是一个设计解决方案,并没有明确的答案。每种解决方案都有其优点和缺点,并选择&#34;正确的&#34;一个取决于实际需要。
一些例子考虑因素:
O(n)
平均时间复杂度,散列解决方案会变得更具吸引力。O(n^2)
时间,无论它有多低 - 它会破坏您的公司。由于散列解决方案在最坏的情况下衰减到O(n^2)
(极少数情况下),你会想要避免它,再次 - 排序变得更有吸引力。