【发布时间】:2020-09-13 12:03:09
【问题描述】:
我想检查是否可以将数组拆分为具有相同总和的连续子数组。拆分数组也意味着删除它的边框元素。
例如,要将其拆分为 3 部分,我们需要移除元素
myArray = [2, 4, 5, 3, 3, 3, 2, 1, 3]
^ ^
通过删除这 2 个元素,有 3 个和 [2, 4]、[3, 3] 和 [2, 1, 3] 相同的连续子数组。
因此,如果可以将数组拆分为 3 部分(总和相等)并删除它们之间的边界 - 它应该返回 true,否则它应该返回 false。
返回false 的示例是[1, 1, 1, 1, 1, 1]。因为在删除 2 个元素后,它将有 4 个 1 元素,它们不能被分组为 3 个相等的总和
我不知道如何解决这个问题,任何建议都有帮助。
【问题讨论】:
-
您要获取
true还是新数组?你还有其他例子吗? -
@NinaScholz 如果我描述的操作可以在该输入数组中完成,我想获得
true。我添加了一个应该返回false的示例 -
可以删除多少元素?只有2个?
-
@Soham 是的,只有 2 个。并且这 2 个元素必须是新创建的子数组的边界,就像我在问题中写的第一个示例一样
-
没有运行时复杂性要求或内存限制,有一个超级简单的答案,那就是“尝试所有排列并在找到单个有效分段时返回 true”。因此,在人们尝试回答您之前:您是否首先实现了它,看看它是否满足您的需求而不是一般? (毕竟,对于短输入,高阶复杂度通常仍然足够快)
标签: javascript arrays algorithm