【问题标题】:Intersection of maximum and minimum subarrays最大和最小子数组的交集
【发布时间】:2013-06-04 16:18:19
【问题描述】:

假设我们有一个包含一些整数的数组(可以是 +ve 和 -ve)。

我们从中找到非空最大和最小子数组(子数组只有连续的元素)。

我的主张是这些子数组要么是不相交的(没有公共元素),要么一个完全包含另一个。不可能有部分交叉。

这个说法是真的吗?如果不行,能举个反例吗?

示例:13 -3 -25 20 -3 -16 -23 18 20 -7 12 -5 -22 15 -4 7

最大子数组是从第 8 到第 11 个元素,总和为 43。 min 子数组是从第 2 到第 7 个元素,总和为 -50。

【问题讨论】:

    标签: arrays array-algorithms sub-array


    【解决方案1】:

    如果考虑以下长度为 4 的整数数组

    1 -1 1 -1
    

    那么最大子数组的和为 1,最小子数组的和为 -1。但是,最大值和最小值都出现两次,并且只有一种选择,它们确实相交。就目前而言,这种说法是错误的。

    但是,如果您限制为最短的子数组,我认为该声明是正确的。或者,如果您说任何重叠的总和必须为零,那么它是正确的。

    最简单的证明方法是注意重叠的总和必须为零。如果重叠的总和不为零,则从最小子阵列的最大子阵列中丢弃重叠区域将产生更高的最大值或更小的最小值。这与 max 和 min 子数组是他们声称的断言相矛盾,因此重叠的总和不能非零。

    【讨论】:

    • 最大子数组 = 1 -1 1。最小子数组 = -1 1 -1。或者其中一个只有一个元素。起初我没有明白,所以把它放在这里以防其他人也没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2017-04-16
    • 2021-01-08
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多