我要解决的问题如下:我想在给定数组中找到最大数字跨度,给定一个由正整数和负整数组成的数组 A 返回最大的 (A[j] - A[i] ) 使得 1<= i < j <= n,我想出了以下 nlogn 时间算法来解决这个问题 - :
- 找到数组的第 n 阶统计量的索引让它为“i”
- 找到数组的一阶统计量的索引让它为“j”
- 如果 i > j,则返回差值,因为我们找到了数组的最大和最小元素之间的差值,因此终止返回差值。
- 如果 j > i 然后将数组分成两半,并通过递归调用此算法找到两半中的最大跨度,即 A[1....i] 和 A[i + 1 ......n],情况是当算法找到这样的一对 i,j 它返回这些对之间的差异,否则它会继续递归并最终终止。
- 返回最大值{子数组 1 的最大跨度,子数组 2 的最大跨度}
这个算法是 O(nlogn) 但我不知道它是否正确。