• leetcodedpmaxProduct


    
    package dp.maxProduct;
    
    /**
     * 152. 乘积最大子数组
     * 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
     * <p>
     * <p>
     * <p>
     * 示例 1:
     * <p>
     * 输入: [2,3,-2,4]
     * 输出: 6
     * 解释: 子数组 [2,3] 有最大乘积 6。
     * 示例 2:
     * <p>
     * 输入: [-2,0,-1]
     * 输出: 0
     * 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
     */
    public class maxProduct {
        //由于可能出现负数,导致最大值,最小值的交替,所以要维护俩个值
        public static int maxProduct(int[] nums) {
            if (nums.length == 0) {
                return 0;
            }
            int imax = 1;
            int imin = 1;
            int res = Integer.MIN_VALUE;
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] < 0) {
                    int temp = imax;
                    imax = imin;
                    imin = temp;
    
                }
                imax = Math.max(nums[i], nums[i] * imax);
                imin = Math.min(nums[i], nums[i] * imin);
                res = Math.max(res, imax);
            }
            return res;
        }
    
        public static void main(String[] args) {
            int[] nums = {2, 3, -2, 4};
            System.out.println(maxProduct(nums));
        }
    }
    
    
    不会,我可以学;落后,我可以追赶;跌倒,我可以站起来!
  • 相关阅读:
    线程池参数详解
    线程池各个参数详解以及如何自定义线程池
    fastdfs 安装
    SQL 执行顺序
    《SQL 进阶教程》 查找局部不一致的数据
    redis 高性能的原因
    一致性hash
    环境部署数据库报错
    redis 常用命令
    redis 高级学习和应用场景
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/15784570.html
Copyright © 2020-2023  润新知