Найти максимально возможное значение массива - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть массив целых чисел, и мне нужно получить их максимально возможное значение. Если у меня отрицательные числа и их общее количество неравномерно, я должен исключить одно из них, чтобы сделать массив положительным.

Если у меня есть 0 внутри, и это может повлиять на результат моего умножения, я должен также исключить его. Например: для [2, 5, -2] результат должен быть 10, для [-2, -5, -1, 0, 2] результат должен быть 20.

Я выполнил задачу, но Система не принимает мое решение, не могли бы вы взглянуть на мое решение, где я мог ошибиться? Я пробовал разные крайние случаи, такие как [-1], [1], [0], [0,0,0]

def answer(n):
    arr = 0
    res = 1
    for number in n:
        if number < 0:
            arr += 1
    n.sort()
    while 0 in n: n.remove(0)
    if not n:
        return '0'
    if len(n) == 1:
        if n[0] < 0:
            return '0'
    elif arr % 2 != 0:
        n.pop(arr - 1)
    for x in n:
        res *= x
    return str(res)

1 Ответ

1 голос
/ 03 февраля 2020

Похоже, вы хотите умножить все числа в списке, кроме любых нулей, и, если есть нечетное число отрицательных чисел, вы исключаете наименьшее отрицательное число?

Простое решение:

from functools import reduce


def answer(numbers):
    selection = [n for n in numbers if n != 0]
    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 reduce(lambda x, y: x * y, selection)


print(answer([-2, -5, -1, 0, 2]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...