网站设计制作哪种快,营销策划岗位职责,网站建设职责要求,wordpress 微信支付插件下载力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 给你一个整数数组 nums #xff0c;请你找出数组中乘积最大的非空连续子数组#xff08;该子数组中至少包含一个数字#xff09;#xff0c;并返回该子数组所对应的乘积。 测试用例的答案是一个 32… 力扣LeetCode官网 - 全球极客挚爱的技术成长平台 给你一个整数数组 nums 请你找出数组中乘积最大的非空连续子数组该子数组中至少包含一个数字并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 题解动态规划
状态转移方程为dp[i] max(dp[i - 1] * nums[i], nums[i]) 为每一个状态只与前一个状态有关可以使用「滚动变量」技巧使用常数个变量完成这道问题
力扣LeetCode官网 - 全球极客挚爱的技术成长平台
代码如下
class Solution {public int maxProduct(int[] nums) {int preMax nums[0];int preMin nums[0];int curMax;int curMin;int res nums[0];for(int i 1; i nums.length;i) {if(nums[i] 0){curMax Math.max(nums[i], preMax*nums[i]);curMin Math.min(nums[i], preMin*nums[i]);}else{curMax Math.max(nums[i], preMin*nums[i]);curMin Math.min(nums[i], preMax*nums[i]);}res Math.max(curMax,res);preMax curMax;preMin curMin;}return res;}
}