确定是否存在长度大于1且均值为整数的连续子数组

时间:2018-09-10 22:31:07

标签: arrays algorithm data-structures

给出一个未排序的整数数组。

我正在尝试提出一种有效的解决方案(优于O(n 2 )),但是我能想到的最好的方案是O(n 2 )解决方案:

for i from 0 to size of list:
    sum = list[i]

    for j from i + 1 to size of list:
        sum += list[j]

        if sum % (j - i + 1) == 0:
            return true
return false

我已经阅读了有关滑动窗口技术的内容,但是看起来对于特定长度 k 的子数组很有用。

1 个答案:

答案 0 :(得分:0)

这可能是一个棘手的问题:)两个奇数总和为偶数,两个偶数总和为偶数。唯一不包括长度为2且也可以被2整除的连续子数组的数据集将不得不交替使用[..., odd, even, odd, even, ...]。但是随后就需要进一步限制数据集,以防止长度为4的子数组被4整除,因为每个其他偶数都可以被4整除。

接收到这样一个列表的可能性非常小,并且随着列表变大而不断降低(更重要的是,它很容易成为数字模式的子集;这些可能引起人们的兴趣吗?),这意味着除非有人辛勤工作要创建一些(即使不是全部)现实世界的情况,也会找到一个滑动窗口大小为4的解决方案,该窗口还检查交替的奇偶校验。