题意理解
求一个数组的最大连续乘积的子序列
问题分析
数组
其他
参考
链接
int maxProduct(vector<int>& nums) {
if (nums.size() == 0) //空数组
return 0; //返回0
int best = INT_MIN; //最大乘积初值为最小整数
int minProd = 1; //最小乘积
int maxProd = 1; //最大乘积
for (int a : nums) //遍历数组元素
{
if (a < 0) //如果负数
{
swap(minProd, maxProd); //交换最大最小值,最小值乘上负数变成最大值
}
minProd = min(minProd * a, a); //如果乘积比当前单个元素大,最小值更新为当前单个元素
maxProd = max(maxProd * a, a); //如果乘积比当前单个元素小,最大值更新为当前单个元素
best = max(maxProd, best); //更新最大值
}
return best;
}