牛客题霸 [子数组最大乘积] C++题解/答案
生活随笔
收集整理的這篇文章主要介紹了
牛客题霸 [子数组最大乘积] C++题解/答案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
牛客題霸 [子數組最大乘積] C++題解/答案
題目描述
給定一個double類型的數組arr,其中的元素可正可負可0,返回子數組累乘的最大乘積。
題解:
同時記錄最大值和最小值,為什么?因為給的元素是存在負數的,當出現負數時,最大值會變成最小值,而最小值也會翻身成最大值,所以要同時記錄,每次最最大情況
代碼:
class Solution { public:double maxProduct(vector<double> arr) {double ansmin = 1,ansmax = 1;double result = arr[0];for (int i = 0; i < arr.size() ; i++) {if (arr[i] < 0)swap(ansmin,ansmax);ansmin = min(ansmin * arr[i],arr[i]);ansmax = max(ansmax * arr[i],arr[i]);result = max(result,ansmax);}return result;} };總結
以上是生活随笔為你收集整理的牛客题霸 [子数组最大乘积] C++题解/答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows10快捷键(windows
- 下一篇: 牛客题霸 [矩阵元素查找] C++题解/