编程——无序数组中找到最大乘积(python)

题目

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

输入描述:

输入共2行,第一行包括一个整数n,表示数组长度
第二行为n个以空格隔开的整数,分别为A1,A2, … ,An

输出描述:

满足条件的最大乘积

示例:

输入:

4

3 4 1 2

输出:

24


思路

  1. 确定5个数,如果都是正数则,最大的是max1*max2*max3
  2. 如果有正有负,则max1*min1*min2

源码

num_ele=int(raw_input())
input_array = list(map(int,raw_input().split(" ")))
max1,max2,max3=float("-inf"),float("-inf"),float("-inf")
min1,min2=float("inf"),float("inf")
index=0
while num_ele>0:

    cur_num=input_array[index]
    if cur_num>max1:
        max3=max2
        max2=max1
        max1=cur_num
    elif cur_num>max2:
        max3=max2
        max2=cur_num
    elif cur_num>max3:
        max3=cur_num
    if cur_num<min1:
        min2=min1
        min1=cur_num
    elif cur_num<min2:
        min2=cur_num
    index+=1
    num_ele-=1
print(max(min1*min2*max1,max1*max2*max3))

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章