zoukankan      html  css  js  c++  java
  • 动态规划专题:LeetCode 乘积最大子数组

    原题链接

    乘积最大子数组

    思路

    刷题得按专题刷,发现这道题很有意思。

    因为负数的引入,导致推导状态就比较麻烦。看了题解,分别记录最大值和最小值。当遇到负数的时候,最大值将会变为最小,最小将会变为最大。真的很巧妙。算是开拓了一个新的思路。

    class Solution {
        public int maxProduct(int[] nums) {
            int max = Integer.MIN_VALUE;
            int max_value = 1, min_value = 1;
            for (int i = 0; i < nums.length; i++) {
                if(nums[i]<0){
                    int temp = max_value;
                    max_value = min_value;
                    min_value = temp;
                }
                max_value = Math.max(max_value*nums[i], nums[i]);
                min_value = Math.min(min_value*nums[i], nums[i]);
                max = Math.max(max, max_value);
            }
            return max;
        }
    }
    
  • 相关阅读:
    爬虫大作业
    作业
    新练习
    爬虫新练习
    最新操作
    小练习
    Hadoop综合大作业
    理解Mapreduce
    熟悉常用的HBase操作
    第三章 熟悉常用的HDFS操作
  • 原文地址:https://www.cnblogs.com/zhouzhiyao/p/12561334.html
Copyright © 2011-2022 走看看