zoukankan      html  css  js  c++  java
  • [LeetCode]Maximum Product Subarray

    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.

    还是动态规划的问题,由于负数的存在,这儿要维护3个变量,local_min,local_max,global。思路可以参考博客

    DP问题的关键是写出递推公式。

    1 int copy_max = local_max;
    2 local_max = max(max(local_max*nums[i],local_min*nums[i]),nums[i]);
    3 local_min = min(min(local_min*nums[i],copy_max*nums[i]),nums[i]);
    4 global = max(global,local_max);

    这就是这道题的递推公式。

     1 class Solution {
     2 public:
     3     int maxProduct(vector<int>& nums) {
     4         if(nums.size()==0) return 0;
     5         int global=nums[0],local_min=nums[0],local_max=nums[0];
     6         for(int i=1;i<nums.size();i++)
     7         {
     8             int copy_max = local_max;
     9             local_max = max(max(local_max*nums[i],local_min*nums[i]),nums[i]);
    10             local_min = min(min(local_min*nums[i],copy_max*nums[i]),nums[i]);
    11             global = max(global,local_max);
    12         }
    13         return global;
    14     }
    15 };
  • 相关阅读:
    Intern Day16
    粉红
    开始还房贷!
    Sonnet-十四行诗
    CSS兼容大全
    TCL电视直播软件
    《Linux权威指南》阅读笔记(2)
    《Linux权威指南》阅读笔记(1)
    Linux crontab定时执行任务 命令格式与详细例子
    linux下find查找命令用法
  • 原文地址:https://www.cnblogs.com/Sean-le/p/4788396.html
Copyright © 2011-2022 走看看