题目描述:给定一个数组,要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个:区间中的最小数 * 区间所有数的和。数组中的元素都是非负数。
输入两行,第一行n表示数组长度,第二行为数组序列。输出最大值。
1 | 输入 |
暴力
把每个数字看成最小值,因为所有数大于0,符合条件的区间越大值越高,扫左扫右,得到边界(第一个小于arr[i]的),最后依次判断得到答案
1 | function enum_method(arr) { |
复杂度分析
- 时间复杂度:O(n^2)
- 空间复杂度:O(n)。使用sum这个数组暂存数据