題目:
給定乙個無序陣列,包含正數、負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度:o(n),空間複雜度:o(1)
輸入描述:
無序整數陣列a[n]
輸出描述:
滿足條件的最大乘積
輸入例子1:
3 4 1 2
輸出例子1:24
思路:
由於空間複雜度和時間複雜度的要求,肯定無法先排序,因為排序最好時為
o(n).整數的值任意需要分情況討論
1.當陣列的最大值<=0或者是陣列的最小值》=0時,乘積最大就是陣列中top3的乘積;
2.除第一種情況外,就需要考慮陣列中的最大的3個數和最小的2個數,因為最大乘積肯定是在(2小+1大)或(3大) 中取得,因此比較兩種記過就可得到最大乘積。
因此分析的,通過遍歷陣列有限次就可以實現該演算法。最多需要遍歷3次數組,額外空間最多為10個位元組。滿足演算法要求
**
public static void pinduoduo()
}result=result*temp1;
temp1=long.min_value;//陣列的第三大值
int index2=-1;
for(int i=0;itemp1)
}result=result*temp1;
return result;
} else if(a[max_index]>0&&a[min_index]<0)
}for(int i=0;itempmax_3)
}long result1=a[min_index]*tempmin_2*a[max_index];
long result2=a[max_index]*tempmax_2*tempmax_3;
return result1>result2?result1:result2;
} return 0;
}
三個數最大的乘積
題目 給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6 示例 2 輸入 1,2,3,4 輸出 24 注意 給定的整型陣列長度範圍是 3,10 4 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數...
YTU 1061 從三個數中找出最大的數
時間限制 1 sec 記憶體限制 128 mb 提交 343 解決 245 提交 狀態 討論版 命題人 外部匯入 定義乙個帶參的巨集 或者模板函式 從三個數中找出最大的數。3個短整型數,空格隔開 3個實數,空格隔開 3個長整數,空格隔開 最大的數,對於實數保留2位小數。1 2 3 1.5 4.7 3...
三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。leetcode鏈結 示例 1 輸入 1,2,3 輸出 6示例 2 輸入 1,2,3,4 輸出 24注意 給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位...