leetcode解题方案--152--Maximum Product Subarray
2017-12-03 21:42
471 查看
题目
Find the contiguous subarray within an array (containing at least one number) which has the largest product.For example, given the array [2,3,-2,4],
the contiguous subarray [2,3] has the largest product = 6.
分析
动态规划因为负负得正,所以要记录负数的最大值。 两次动态规划。
class Solution { public static int maxProduct(int[] nums) { int[] dpp = new int[nums.length]; int[] dpn = new int[nums.length]; dpp[0] = nums[0] > 0 ? nums[0] : 0; dpn[0] = nums[0] > 0 ? 0 : nums[0]; int retn = dpn[0]; int retp = dpp[0]; for (int i = 1; i < nums.length; i++) { if (nums[i] > 0) { dpp[i] = (dpp[i - 1] == 0 ? 1 : dpp[i - 1]) * nums[i]; dpn[i] = (dpn[i - 1] == 0 ? 0 : dpn[i-1])*nums[i]; } else if (nums[i] < 0) { dpn[i] = (dpp[i - 1] == 0 ? 1 : dpp[i - 1]) * nums[i]; dpp[i] = (dpn[i - 1] == 0 ? 0 : dpn[i-1])*nums[i]; } else { dpp[i] = 0; dpn[i] = 0; } retp= Math.max(dpp[i], retp); retn = Math.max(dpn[i],retn); } if (retp==0) { return retn; } return retp; } }
看到leetcode上解答还有左右各遍历一次的
相关文章推荐
- Leetcode 152-MaximumProductSubarray 解题报告
- LeetCode 152: Maximum Product Subarray
- [LeetCode]题解(python):152-Maximum Product Subarray
- [LeetCode152]Maximum Product Subarray
- leetcode 152 —— Maximum Product Subarray
- leetcode 152 Maximum Product Subarray
- Leetcode152——Maximum Product Subarray
- leetcode(152). Maximum Product Subarray
- LeetCode 152 Maximum Product Subarray (思维)
- Leetcode 152 Maximum Product Subarray
- [LeetCode]152 Maximum Product Subarray
- leetcode 152: Maximum Product Subarray
- [leetcode 152] Maximum Product Subarray
- leetcode152-Maximum Product Subarray(乘积最大子数组)
- [leetcode] 152 Maximum Product Subarray
- LeetCode 152 Maximum Product Subarray
- LeetCode Maximum Product Subarray 解题报告
- LeetCode 解题报告 Maximum Product Subarray
- [LeetCode] Maximum Product Subarray 解题思路
- leetcode 152 Maximum Product Subarray