查找数组的最大可能值[关闭]

问题描述 投票:0回答:1

我有一个整数数组,我需要获取它们的最大可能值。如果我有负数并且它们的总数不均匀,那么我必须排除其中之一以使数组为正。

如果内部有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)
python algorithm max
1个回答
0
投票

看来您正在寻求将列表中的所有数字相乘,除了任何零之外,如果负数的数目为奇数,就排除了最小的负数?

一个简单的解决方案:

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]))
© www.soinside.com 2019 - 2024. All rights reserved.