美文网首页
拼多多-最大乘积

拼多多-最大乘积

作者: 葡萄肉多 | 来源:发表于2019-07-27 09:42 被阅读0次

    给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)。

    输入描述:
    第一行是数组大小n,第二行是无序整数数组A[n]

    输出描述:
    满足条件的最大乘积

    输入例子1:
    4
    3 4 1 2
    输出例子1:
    24

    思路

    1. 求得数组所有3项子集
    2. 再找出子集中最大乘积

    没有在牛客上验证过时间和空间复杂度,找时间验证了再更新

    代码

    from itertools import combinations
    from functools import reduce
    
    n = int(input())
    a = list(map(int, input().split()))
    a_sub = list(combinations(a, 3))
    max = 0
    
    for sub in a_sub:
        re = reduce(lambda x, y: x * y, sub)
        if re > max:
            max = re
    
    print(max)
    
    

    相关文章

      网友评论

          本文标题:拼多多-最大乘积

          本文链接:https://www.haomeiwen.com/subject/bxssrctx.html