Я получил вопрос интервью, чтобы найти непустое подмножество массива с максимальным произведением. Я решил задачу, но один тест из пяти не проходит. Я не понимаю, что я мог упустить в своем решении. (Задача должна быть выполнена в python 2.7)
Задача здесь:
У меня есть массив целых чисел, и мне нужно вернуть непустое подмножество элементов с максимальным произведением ценностей. Если у меня есть нечетное количество отрицательных чисел в массиве, я должен исключить одно из них, чтобы выбранный продукт был положительным.
Если у меня внутри 0, в общем, я тоже хочу его исключить. Например: для [2, 5, -2] результат должен быть 10, для [-2, -5, -1, 0, 2] результат должен быть 20.
Я пробовал разные крайние случаи, например [ -1], [1], [0], [0,0,0]
Решение здесь:
from functools import reduce
def answer(arr):
selection = [n for n in arr if n !=0 and -1000<=n<=1000]
negative = [n for n in selection if n<0]
if len(negative) % 2 == 1:
selection.remove(max(negative))
if not selection:
return '0'
else:
return str(reduce(lambda x, y: x * y, selection))