zoukankan      html  css  js  c++  java
  • Leetcode Maximum Product Subarray

    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.


    解题思路:

    This is similar to maximum subarray. Instead of sum, the sign of number affect the product value.

    When iterating the array, each element has two possibilities: positive number or negative number. We need to track a minimum value, so that when a negative number is given, it can also find the maximum value. We define two local variables, one tracks the maximum and the other tracks the minimum.


    Java code:

    public class Solution {
        public int maxProduct(int[] nums) {
            int result = nums[0];
            int max = nums[0];
            int min = nums[0];
            for(int i = 1; i< nums.length; i++) {
                int temp = max;
                max = Math.max(Math.max(nums[i], nums[i] * temp), nums[i] * min);
                min = Math.min(Math.min(nums[i], nums[i] * temp), nums[i] * min);
                result = Math.max(max, result);
            }
            return result;
        }
    }

    Reference:

    1. http://www.programcreek.com/2014/03/leetcode-maximum-product-subarray-java/

  • 相关阅读:
    Python基础四
    Python基础三
    Python基础二
    Python基础一
    JAVA测试
    国庆随笔
    ATM-JAVA程序 //程序有5处相同错误,找不出原因 转账功能没有实现,修改密码来不及实现了
    JAVA程序测试感受
    第八周
    第七周
  • 原文地址:https://www.cnblogs.com/anne-vista/p/4896579.html
Copyright © 2011-2022 走看看