最大产品子阵列| 在C ++中添加了否定产品案例
在本教程中,我们将讨论一个程序来查找具有负乘积情况的最大乘积子数组。
为此,我们将提供一个包含正值和负值的数组。我们的任务是在O(n)时间复杂度内找到子阵列的最大乘积。
示例
#include <bits/stdc++.h>
using namespace std;
//查找最大乘积子数组
int findMaxProduct(int arr[], int n) {
int i;
int ans = INT_MIN;
int maxval = 1;
int minval = 1;
int prevMax;
for (i = 0; i < n; i++) {
if (arr[i] > 0) {
maxval = maxval * arr[i];
minval = min(1, minval * arr[i]);
}
else if (arr[i] == 0) {
minval = 1;
maxval = 0;
}
else if (arr[i] < 0) {
prevMax = maxval;
maxval = minval * arr[i];
minval = prevMax * arr[i];
}
ans = max(ans, maxval);
if (maxval <= 0) {
maxval = 1;
}
}
return ans;
}
int main() {
int arr[] = { 0, -4, 0, -2 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << findMaxProduct(arr, n);
return 0;
}输出结果
0
热门推荐
10 财运虎年祝福语简短语
11 单亲爸爸春节祝福语简短
12 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短