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

    原题链接在这里:https://leetcode.com/problems/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.

    题解:

    Maximum Subarray类似。但出了要维护一个局部最大量外还需要同时多维护一个局部最小量。

    e.g.[-2,3,-4], 若不维护局部最小量, i = 1时,局部最大是3, 全局最大也是3, i=2时, 局部最大变成-4, 全局最大变成3, 但实际全局最大应该是8. 这是因为负数与负数相乘可能会产生一个很大的正数,与加法只要是负一定变小不同。

    所以要同时维护一个局部最小变量,以防当前值是负数。

    Time Complexity: O(n). Space: O(1).

    AC Java:

     1 public class Solution {
     2     public int maxProduct(int[] nums) {
     3         if(nums == null || nums.length == 0){
     4             return 0;
     5         }
     6         int localMax = nums[0];
     7         int localMin = nums[0];
     8         int globalMax = nums[0];
     9         for(int i = 1; i<nums.length; i++){
    10             int temp = localMax;
    11             localMax = Math.max(Math.max(temp*nums[i], nums[i]), localMin*nums[i]);
    12             localMin = Math.min(Math.min(localMin*nums[i], nums[i]), temp*nums[i]);
    13             globalMax = Math.max(globalMax, localMax);
    14         }
    15         return globalMax;
    16     }
    17 }
  • 相关阅读:
    linux端口开放指定端口的两种方法
    关于JqueryCheck选中获取数据
    ASP.NET MVC 简单分页代码
    ASP.NET MVC4分页Site.CSS
    SQL索引的优缺点
    SQL字段数据类型小技巧
    数据库强制完整性的机制
    WinFrom饼形图
    WinFrom折线图
    WinFrom柱形图
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/4824949.html
Copyright © 2011-2022 走看看