zoukankan      html  css  js  c++  java
  • leecode 152. 乘积最大子数组

    hi

    /*
     * 152. Maximum Product Subarray
     * 题意:连续子序列最大乘积
     * 难度:Medium
     * 分类:Array, Dynamic Programming
     * 思路:保存最大,最小值,因为负负得正。dp不用保存数组,空间可以压缩。
     * Tips:Product是乘的意思
     */
    public class lc152 {
        public static void main(String[] args) {
            int[] nums = {-4,-3,-2};
            System.out.println(maxProduct(nums));
        }
        public static int maxProduct(int[] nums) {
            int max = nums[0], min = nums[0], res = nums[0];
            for (int i = 1; i < nums.length ; i++) {
                if(nums[i]>0){
                    max = Math.max(nums[i],nums[i]*max);
                    min = Math.min(nums[i],nums[i]*min);
                }else{
                    int temp = max; //注意max会被替换,先保存下
                    max = Math.max(nums[i],nums[i]*min);
                    min = Math.min(nums[i],nums[i]*temp);
                }
                res = Math.max(max, res);
            }
            return res;
        }
    }
  • 相关阅读:
    Ajax
    Linux安装SmartSVN及破解
    JQuery异步提交
    动画效果
    事件
    表单选择器
    DOM操作
    JQuery基础
    PHP环境配置
    DP--钢条切割
  • 原文地址:https://www.cnblogs.com/kpwong/p/14657041.html
Copyright © 2011-2022 走看看