给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。

分析,是一个dp的题目,

设f[i]表示以i为结尾的最大值,g[i]表示以i结尾的最小值,那么

f[i+1] = max{f[i]*arr[i+1], g[i]*arr[i+1],arr[i+1]} ,只有这三种情况。

考虑到f[i],g[i]只和i-1有关,那么可以用局部变量即可搞定,而不用使用数组。

http://www.nowcoder.com/profile/864393/test/231563/24590

class Solution {
public:
double maxProduct(vector<double> arr) {
if(arr.size() == )
return ;
double minVal = arr[];
double maxVal = arr[];
double rtn = arr[]; double tmpMax = ;
double tmpMin = ; for(int i = ; i < arr.size(); i++)
{
//cout << "max\t" << maxVal << endl;
//cout << "min\t" << minVal << endl;
tmpMax = max(maxVal * arr[i], minVal * arr[i]);
tmpMin = min(maxVal * arr[i], minVal * arr[i]); maxVal = max(tmpMax, arr[i]);
minVal = min(tmpMin, arr[i]); rtn = max(rtn, maxVal);
}
return rtn;
}
};

最新文章

  1. ORA-600(qerltcInsertSelectRop_bad_state)错误
  2. Ubuntu 14 常用“快捷键”,Ctrl + Alt + F1 进入终端,按 Ctrl + Alt + F7 回到界面
  3. Android RecyclerView单击、长按事件标准实现:基于OnItemTouchListener + GestureDetector
  4. Cent OS服务器配置(JDK+Tomcat+MySQL)
  5. 对EBS中配置文件的初步认识
  6. PhpStorm注册码 key license
  7. MWC飞控增加声纳定高的方法
  8. Web 网页常见问题集锦
  9. ExtJS4.2学习(四)Grid表格中文排序问题(转)
  10. Spark运行各个时间段的解释
  11. [Javascript] Introducing Reduce: Common Patterns
  12. ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境
  13. @JsonFormat 日期格式自动格式化
  14. 关于wordpress后台首页加载ajax.googleapis特别慢的解决办法
  15. shiro-core包引用的版本问题
  16. layer弹出层的iframe页面回调
  17. Java8简明指南
  18. php 获取请求参数
  19. Activiti源码:StandaloneInMemProcessEngineConfiguration与SpringProcessEngineConfiguration
  20. SQL脚本添加删除修改字段

热门文章

  1. 20150506—WinForm自动生成按钮&amp;按钮拖动
  2. asp.net 小技巧
  3. Java 字节流实现文件读写操作(InputStream-OutputStream)
  4. 进程通信---FIFO
  5. android:layout_weight越大所占比例越大和越大所占比例越小的两个例子
  6. 运行maven报错:经过检查是因为maven不兼容jdk1.6,重新安装1.7解决
  7. NSS_07 extjs中grid在工具条上的查询
  8. linux查看硬件信息
  9. thymeleaf 局部变量、属性优先级、注释
  10. Memcached 配置 和项目应用