【发布时间】:2015-07-07 00:54:24
【问题描述】:
我有一个随机排列的正整数数组。一个数字 x 从给定的列表中,我们需要在列表中找到任意两个数字 总和等于 x。运行时间必须小于 n^2。
{编辑} 我所做的是,我将所有小于 x 一半的数字放在一个数组中,将大于一半的 x 放在另一个数组中,所有大于 x 的数字都被丢弃,然后想法是所需的两个数字必须来自两个数组(不是来自单个数组)并且通过迭代我可以得到这两个数字。
现在对于最坏的情况,我有点困惑,这种方法是好的吗?或者如果有人指导我做比这更好的事情,我们也可以实现 log n 或 n *log n 吗?
【问题讨论】:
-
这不是骗子。这个问题是相关的,但 OP 在这里有一个不同的问题。他有一个特定的(不同的)解决方案,并询问它的复杂性。
标签: java arrays performance algorithm sorting