【发布时间】:2014-05-26 22:30:28
【问题描述】:
考虑以下问题:
给出一个整数数组。您的目标是修剪数组,使 2*min > max,其中 min 和 max 是数组的最小和最大元素。如果上述条件不满足,您可以从数组的开头或结尾删除元素。应尽量减少移除次数。
例如如果数组是
a, b, c, d, e, f
其中 c 是最小值,e 是最大值,那么如果 2*c > e 为真,我们就完成了。如果不是,我们可以从开头(即 a、b、c)或从结尾(即 e、f)删除,这样新的 min 或 max 将满足条件并且删除应该是最小的。
我有一个 O(n2) 算法来解决这个问题。这能在 O(n log n) 的时间内解决吗?
【问题讨论】:
-
你的 O(n^2) 算法是什么?
-
嗯,你也可以同时从两边移除吗?否则我的回答比必要的更笼统
标签: arrays algorithm big-o time-complexity