【发布时间】:2020-11-02 11:23:23
【问题描述】:
我正在尝试寻找一种算法来解决以下 python 问题。
Given a list of integers, check if after dropping two elements of the list, is it possible to divide the list in 3 where the sum of the consecutive numbers are equals.
例如:
A = [1, 3, 4, 2, 2, 2, 1, 1, 2] 应该返回 TRUE 因为我们会丢弃列表中的粗体元素可以在 [1, 3], [2, 2], [2, 1, 1] 中分割,其中所有总和为 4
B = [1, 1, 1, 1, 1, 1] 应该返回 FALSE
C = [1, 1, 3, 1, 1, 1034, 5, 9900, 1, 2] 也应该返回 FALSE 因为即使在删除粗体数字后,您可以将数字相加 5 (1,1,3), (5), (1, 1, 1, 2) 列表应该首先排序,这是不允许的。
我提供了一个似乎可行的解决方案,但它非常非常糟糕,不确定是否总是有效,而且复杂性太高,什么时候应该是 O(n) 我不知道如何迭代从列表中删除 2 个数字而不具有 O(n^2)
的复杂性谢谢
【问题讨论】:
-
如果这在 O(n) 中是可能的,我会感到惊讶。在最坏的情况下,您必须检查列表中每对数字的整个列表(减去 2 项)。
-
也许你应该发布这个问题codereview.stackexchange.com
-
听起来像是装箱的变种...
-
谢谢@deadshot,但问题是你不知道总和,这样会更容易。