大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
示例 1:
输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:
输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
typedef long long ll;
const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
int f[2][2];
class Solution {
public:
int maxProduct(vector<int>& nums) {
int ans = -INF;
for(int i = 1;i <= nums.size();i ++){
int x = nums[i - 1];
if(i == 1){
f[i & 1][0] = f[i & 1][1] = x;
ans = max(ans,f[i & 1][0]);
continue;
}
f[i & 1][0] = max(f[(i - 1) & 1][0] * x,max(x,f[(i - 1) & 1][1] * x));
f[i & 1][1] = min(f[(i - 1) & 1][0] * x,min(x,f[(i - 1) & 1][1] * x));
ans = max(ans,f[i & 1][0]);
}
return ans;
}
};
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168548.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...