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.

Idea:

https://leetcode.com/problems/maximum-product-subarray/discuss/

keep max(min) value in imax(imin) varable when pointer = i.

swap起到重要作用.
虽然求子数组最大乘积,但最小乘积也需维护,因为:
A Truth is:
big -> small when (A[i] big when (A[i]

人家想法,自个代码:

\(O(n)\) time, \(O(1)\) extra space.

// https://leetcode.com/problems/maximum-product-subarray/discuss/
// A = [2,3,-2,4] return [2,3] = 6
int maxProduct(vector<int>& A) {
int r = A[0], imax = r, imin = r;
for (int i = 1; i < A.size(); i++) {
// A Truth is:
// big -> small when (A[i] < 0)
// small -> big when (A[i] < 0)
// whatever imax, imin is stored negt or posi in.
if (A[i] < 0)
swap(imax, imin); // keep max(min) value in imax(imin) when pointer = i
imax = max(A[i], imax * A[i]); // 之所以记录 imin,
// 是因为 if(A[i] < 0) swap(imax, imin);
// 用到 imin
imin = min(A[i], imin * A[i]);
r = max(r, imax);
}
return r;
}

最新文章

  1. C# 获取本机指定类型指定网卡的Ip地址
  2. (四)装饰模式-C++实现
  3. js获取元素的innerText属性为什么为空
  4. xtraTabControl 如何遍历每个选项卡 z
  5. Oracle数据库编程:在JDBC中应用Oracle
  6. Session案例
  7. (转)ASP.NET QueryString乱码解决问题
  8. 语音控制的tab选项卡
  9. Android开发编码规范(自用)
  10. 图的最小生成树(Prim、Kruskal)
  11. PHP 正则函数
  12. pyhton 关于 configparser 配置 模块 实践使用中碰到的坑
  13. PHP获取字符串编码与转码
  14. zTree树形菜单交互选项卡效果实现
  15. Python学习笔记:Flask-Migrate基于model做upgrade的基本原理
  16. Fiddler Composer 模拟post请求
  17. UOJ #76 【UR #6】懒癌
  18. 报错:Column count doesn&#39;t match value count at row 1
  19. JS----贪吃蛇游戏
  20. oc总结 --oc基础语法相关知识

热门文章

  1. SpringCloud的服务注册中心(二)注册中心服务端和两个微服务应用客户端
  2. vmvare入门(1)使用移动,不要使用复制
  3. python tornado TCPserver异步协程实例
  4. windows server 2016远程桌面进去,英文系统修改语言
  5. Python入门之ATM+购物车代码版思维导图
  6. 从PRISM开始学WPF(九)交互Interaction?
  7. ArUco----一个微型现实增强库的介绍及视觉应用(一)
  8. hdu1060 Leftmost Digit---求N的N次方的首位(对数)
  9. z-index的学习整理转述
  10. iframe 里的高度适应的问题