程式設計 無序陣列中找到最大乘積 python

2021-10-05 19:18:57 字數 993 閱讀 7739

給定乙個無序陣列,包含正數、負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度:o(n),空間複雜度:o(1)

輸入描述:

輸入共2行,第一行包括乙個整數n,表示陣列長度

第二行為n個以空格隔開的整數,分別為a1,a2, … ,an

輸出描述:

滿足條件的最大乘積
示例:

輸入:3 4 1 2

輸出:確定5個數,如果都是正數則,最大的是max1*max2*max3

如果有正有負,則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_nummin2=min1

min1=cur_num

elif cur_nummin2=cur_num

index+=1

num_ele-=1

print(max(min1*min2*max1,max1*max2*max3))

由無序陣列中找到第K 大的元素

當然如果我們想要實現這個問題會有很多思路,可以將原來的陣列進行排序即可,直接隨機訪問到第k個元素即可。我們專門寫一篇部落格當然不是想利用這種思路的,可以試試改進的快速排序啊,對不,我個人覺得是利用了兩種思路乙個是快速排序乙個是二分查詢,在進行快速排序的時候,在指定範圍內找到該值的下標,如果該下標與k...

python 實現在無序陣列中找到中位數方法

一 問題描述 1 求乙個無序陣列的中位數,若陣列是偶數,則中位數是指中間兩個數字之和除以2,若陣列是奇數,則中位數是指最中間位置。要求 不能使用排序,時間複雜度盡量低 2 例如 lists 3,2,1,4 中位數為 2 3 2 2.5 lists 3,1,2 中位數為 2 3 演算法思想 利用快速排...

程式設計之美 子陣列的最大乘積

public class maxproduct for int a aa else 對應書上的解法1.空間換時間 public int maxproducta int a int n a.length int s new int n s 0 1 for int i 1 i n 1 i int t n...