【发布时间】:2017-09-26 20:16:56
【问题描述】:
问题是 - 从所有子数组中找到所有最大值的总和。例如,我有数组 {2, 8, 4, 3, 5},解将是 92。我所有的子数组都是:
{2},{8},{4},{3},{5},
{2,8},{8,4},{4,3},{3,5},
{2,8,4},{8,4,3},{4,3,5},
{2,8,4,3},{8,4,3,5},
{2,8,4,3,5}
所有子数组的最大值是:
2 - 8 - 4 - 3 - 5 -
8 - 8 - 4 - 5 -
8 - 8 - 5 -
8 - 8 -
8
你知道在线性时间复杂度上解决这个问题的方法吗?
【问题讨论】:
-
是的,我们知道。但是你的尝试是什么?任何一段代码你都在纠结?
-
问题是你是怎么解决的。
-
好吧,我试图在 n^2 中解决这个问题,找到所有子数组并从每个子数组中获取最大值,但不幸的是,这里的关键是尝试在线性时间内解决这个问题
-
对于给定的集合,我得到 192。你的意思是说 192 而不是 92?无论如何,我不知道解决方案,但一种方法是归纳地看待这个问题。从一组 1 个元素开始,无论是最大的还是最小的(我不知道哪种方式效果更好),然后一次添加一个更小或更大的元素,直到你得到整个集合。
-
我投票结束这个问题,因为 StackOverflow 不是 HomeWorkSolutionFactory。 OP 没有提供他/她解决问题的尝试、他/她苦苦挣扎的实现或任何值得构建解决方案的想法。