【发布时间】:2015-08-13 01:57:08
【问题描述】:
如何查找/存储长度为 n 的数组的所有可能的非空子数组的最大值/最小值?
如果确实查询到段树,我生成了数组的段树和每个可能的子数组,但这效率不高。我如何在 O(n) 中做到这一点?
P.S n
For eg. arr[]= { 1, 2, 3 }; // the array need not to be sorted
sub-array min max
{1} 1 1
{2} 2 2
{3} 3 3
{1,2} 1 2
{2,3} 2 3
{1,2,3} 1 3
【问题讨论】:
-
数组排序了吗?
-
请提供样本数据(即使小于真实数据)和预期结果。
-
您在寻找算法或 C++ 代码吗?如果您正在寻找一种算法,那么语言应该无关紧要,也许应该删除
C++标记。 -
取决于你想要什么,你可能有也可能没有理由期待
O(n)。如果您只想要一组可能的最大值和最小值,您只需将元素填充到一个集合中,那就是O(n),另一方面,如果您想用相应的最大值/最小值枚举所有非空子数组将不得不面对这样一个事实,即子数组的数量为O(n^2),每个子数组都需要一些时间来找到最大/最小值,所以至少O(n^2),可能更多。 -
什么是子数组? 连续条目的集合?或不?请编辑问题。
标签: algorithm array-algorithms