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/

  • 相关阅读:
    用nodejs 开发的智能提示
    分布式系统之消息中间件rabbitmq
    理解RESTful架构
    zf框架的思想及学习总结
    php网上支付易宝
    phpstorm使用技巧
    phpstorm使用技巧
    mysql中的数据类型
    CF113D 高斯消元、dp
    bzoj4008: [HNOI2015]亚瑟王 dp
  • 原文地址:https://www.cnblogs.com/anne-vista/p/4896579.html
Copyright © 2011-2022 走看看