152. Maximum Product Subarray
Given an integer array nums
, find a subarray that has the largest product, and return the product.
The test cases are generated so that the answer will fit in a 32-bit integer.
Example 1:
Input: nums = [2,3,-2,4] Output: 6 Explanation: [2,3] has the largest product 6.
Example 2:
Input: nums = [-2,0,-1] Output: 0 Explanation: The result cannot be 2, because [-2,-1] is not a subarray.
Find the contiguous subarray within an array (containing at least one number) which has the largest product.
//要考虑特殊情况,即负数和负数相乘,如2,-3,-7,所以在处理乘法时,除了维护一个局部最大值,还要维护一个局部最小值。
public int maxProduct(int[] nums) {
if (nums.length == 0)
return 0;
if (nums.length == 1)
return nums[0];
int max = Integer.MIN_VALUE;
int maxPre = nums[0];
int minPre = nums[0];
int maxHere, minHere;
for (int i = 1; i < nums.length; i++) {
maxHere = Math.max(Math.max(maxPre * nums[i], minPre * nums[i]), nums[i]);
minHere = Math.min(Math.min(maxPre * nums[i], minPre * nums[i]), nums[i]);
max = Math.max(maxHere, max);
maxPre = maxHere;
minPre = minHere;
}
return max;
}
分类:
leetCode hot 100
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix