編程——無序數組中找到最大乘積(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))

 

 

 

 

 

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