【发布时间】:2013-10-10 23:39:05
【问题描述】:
我要解决的问题如下:我想在给定数组中找到最大数字跨度,给定一个由正整数和负整数组成的数组 A 返回最大的 (A[j] - A [i]) 使得 1
- 找到数组的第n阶统计量的索引,让它为“i”
- 找到数组的一阶统计量的索引,让它为“j”
- 如果 i > j,则返回差值,因为我们找到了数组的最大和最小元素之间的差值,因此终止返回差值。
- 如果 j > i 然后将数组分成两半,并通过调用此函数找到两半中的最大跨度,即 A[1....i] 和 A[i + 1 ......n]递归算法,当算法找到这样的一对 i,j 时,它会返回这些对之间的差异,否则它会继续递归并最终终止。
- 返回最大值{子数组 1 的最大跨度,子数组 2 的最大跨度}
这个算法是 O(nlogn) 但我不知道它是否正确。
【问题讨论】:
-
那么如果你计算“span”,你只想计算那个数组中最大和最小数之间的差异?
-
啊我大概明白了,所以是 Max 和 Min,但 Min 必须始终在“左侧”
-
是的,最小值必须始终在左边 A[j] - A[i] 1
-
我认为你的算法是错误的 {9,-5,-4,6,7,8} 呢?
标签: algorithm recursion recurrence