博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-152 Maximum Product Subarray
阅读量:4121 次
发布时间:2019-05-25

本文共 843 字,大约阅读时间需要 2 分钟。

对于Product Subarray,要考虑到一种特殊情况,即负数和负数相乘:如果前面得到一个较小的负数,和后面一个较大的负数相乘,得到的反而是一个较大的数,如{2,-3,-7},所以,我们在处理乘法的时候,除了需要维护一个局部最大值,同时还要维护一个局部最小值,由此,可以写出如下的转移方程式:

max_copy[i] = max_local[i]
max_local[i + 1] = Max(Max(max_local[i] * A[i], A[i]),  min_local * A[i])

min_local[i + 1] = Min(Min(max_copy[i] * A[i], A[i]),  min_local * A[i])

max_local[i + 1]表示已下标i+1结尾的连续字数组的最大乘积

class Solution {public:    int maxProduct(vector
& nums) { int len = nums.size(); if(len == 0) return -1; int res = nums[0]; int dpmax = nums[0] , dpmin = nums[0]; for(int i = 1; i < len; i++){ int tmpmax = max(max(dpmax * nums[i],nums[i]),dpmin * nums[i]); dpmin = min(dpmax * nums[i],min(dpmin * nums[i],nums[i])); dpmax = tmpmax; if(dpmax > res) res = dpmax; } return res; }};

转载地址:http://vmspi.baihongyu.com/

你可能感兴趣的文章
C++模板
查看>>
【C#】如何实现一个迭代器
查看>>
【C#】利用Conditional属性完成编译忽略
查看>>
DirectX11 光照演示示例Demo
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Node.js-模块和包
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
PHP 7 的五大新特性
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
OpenCV meanshift目标跟踪总结
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
听说玩这些游戏能提升编程能力?
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
Mysql复制表以及复制数据库
查看>>
Linux下SVN客户端使用教程
查看>>