【发布时间】:2012-12-06 10:26:47
【问题描述】:
我只有 1 和 0 的数组。现在我想找到至少包含 K 个 0 的最小连续子集/子数组。
示例 数组是 1 1 0 1 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 和 K(6) 应该是 0 0 1 0 1 1 0 0 0 或 0 0 0 0 1 0 1 1 0....
我的解决方案
Array: 1 1 0 1 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0
Index: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Sum: 1 2 2 3 4 4 5 6 6 6 6 6 7 7 8 9 9 9 9 10 11 11 11
Diff(I-S): 0 0 1 1 1 2 2 2 3 4 5 6 6 7 7 7 8 9 10 10 10 11 12
对于 K(6)
从 9-15 开始 = 将差异存储在差异中。
下一步增加差异 8-15(指数差异) 8-14(比较指数差异)
所以继续寻找元素最少的元素...
我正在为此解决方案寻找更好的算法。
【问题讨论】:
-
我相信你正在寻找一个 minimal contigious 子数组(否则问题很简单)
-
是的,阿米特。我正在寻找连续数组...
-
在您的问题正文中提及“最小”并将问题标题中的“最小子集”更改为“最短子串”会有所帮助。
-
它不是一个字符串,我有一个数组...所以我只需要子集..
-
好的,我已经修改了标题,希望现在更有意义
标签: arrays algorithm data-structures