zoukankan      html  css  js  c++  java
  • 152. Maximum Product Subarray

        /*
         * 152. Maximum Product Subarray
         * 12.29 by Mingyang
         * 其实子数组乘积最大值的可能性为:累乘的最大值碰到了一个正数;累乘的最小值(负数),碰到了一个负数。
         * 所以每次要保存累乘的最大(正数)和最小值(负数)。
         * 如果之前的最大和最小值同当前元素相乘之后,没有当前元素大(或小)那么当前元素就可作为新的起点。
         * 例如,前一个元素为0的情况,{1,0,9,2},到9的时候9应该作为一个最大值,也就是新的起点,
    * {1,0,-9,-2}也是同样道理,-9比当前最小值还小, * 所以更新为当前最小值。这种方法只需要遍历一次数组即可,算法时间复杂度为O(n)。 * 不要以为所有的dp问题都要设置一个dp数组!!!!!!
    * 有一点注意的就是 max_temp = Math.max(Math.max(a,b), A[i]);
    * 更新最大最小值得时候,不光是前面最大值乘以现在的值和现在的值比较,还有最小值乘以现在值

    */ public static int maxProduct(int A[]) { if(A==null||A.length==0) { return 0; } int maxProduct = A[0]; int max_temp = A[0]; int min_temp = A[0]; for(int i=1;i<A.length;i++) { int a = A[i]*max_temp; int b = A[i]*min_temp; max_temp = Math.max(Math.max(a,b), A[i]); min_temp = Math.min(Math.min(a,b), A[i]); maxProduct = Math.max(maxProduct, max_temp); } return maxProduct; }
  • 相关阅读:
    RabbitMQ 安装
    redis windows安装
    Python Scrapy 爬取煎蛋网妹子图实例(二)
    Python Scrapy 爬取煎蛋网妹子图实例(一)
    Python pymysql 增删改查封装
    Python Scrapy 爬虫框架实例(一)
    Mac Anaconda 简单介绍 -- 环境管理
    python Scrapy 常见问题记录
    Hive json字符串解析
    大数据
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5552161.html
Copyright © 2011-2022 走看看