在线性时间内迭代嵌套数组

时间:2013-03-15 00:38:50

标签: arrays algorithm big-o

我知道如何做到这一点的唯一方法是嵌套循环。但这在O(n ^ 2)时间内运行。我的导师告诉我,如果有的话,在一次采访中,我被要求解决一个问题,我开始通过嵌套循环这样做,我应该停下来重新思考这个问题。显然,总有一条比O(n ^ 2)更好的路线。我一直在考虑这个问题,无论我如何在谷歌上重述我的问题,我都找不到答案。有可能吗?

2 个答案:

答案 0 :(得分:1)

这是最快的方法。

如果检查的条目数与总嵌套数组结构中的条目一样多......好吧,你显然不能做得更好,不是吗? ;)

您的困惑是您认为n =结构的维度,但实际上n =结构总数中的条目数。因此,只要在该嵌套级别没有任何东西留下来检查

,循环结束就是O(n)使用嵌套循环

答案 1 :(得分:1)

显然,总有比O(n ^ 2)更好的路线

我认为这显然是错误的。有些问题确实是O(n ^ 2)。除非有特定的语言功能以某种方式使问题更有效,否则O(n ^ 2)是嵌套数组的最佳选择。