【发布时间】:2016-04-10 22:52:04
【问题描述】:
我正在尝试编写一个采用线性数组的算法,从最低到最高排序。如果 arr[i] - arr[j] = 160,它应该返回值的位置。
我的问题是运行时间应该是 O(n)。
如果我使用从最高到最低数组元素的 for 循环来执行此操作,并且使用二进制搜索为每个元素搜索适当的数组元素,则运行时间仍然是 O(n log2 n)。
如何将复杂度降低到 O(n)?
【问题讨论】:
-
也许您可以更详细地向我们展示您的尝试以及您对如何改进解决方案的想法。这听起来很像一个家庭作业问题,所以人们可能更愿意一起帮助你,而不是为你编写程序。另请参阅stackoverflow.com/help/mcve(现在阿米特很快就回答了这个问题,但对于未来的问题,请查看该链接)。
-
@dfri 恕我直言,这个问题很好。他确实展示了一个尝试过的解决方案 + 分析了它的复杂性,并得出结论它还不够好。只有到那时,他才问如何改进它。对我来说似乎很好。
-
这个问题可能更适合cs.stackexchange.com