Я пытаюсь найти алгоритм для решения следующей проблемы с 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] должна возвращать ЛОЖЬ
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)
Th анкс