[nowCoder] 子数组最大乘积
2024-10-18 15:29:15
给定一个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;
}
};
最新文章
- ORA-600(qerltcInsertSelectRop_bad_state)错误
- Ubuntu 14 常用“快捷键”,Ctrl + Alt + F1 进入终端,按 Ctrl + Alt + F7 回到界面
- Android RecyclerView单击、长按事件标准实现:基于OnItemTouchListener + GestureDetector
- Cent OS服务器配置(JDK+Tomcat+MySQL)
- 对EBS中配置文件的初步认识
- PhpStorm注册码 key license
- MWC飞控增加声纳定高的方法
- Web 网页常见问题集锦
- ExtJS4.2学习(四)Grid表格中文排序问题(转)
- Spark运行各个时间段的解释
- [Javascript] Introducing Reduce: Common Patterns
- ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境
- @JsonFormat 日期格式自动格式化
- 关于wordpress后台首页加载ajax.googleapis特别慢的解决办法
- shiro-core包引用的版本问题
- layer弹出层的iframe页面回调
- Java8简明指南
- php 获取请求参数
- Activiti源码:StandaloneInMemProcessEngineConfiguration与SpringProcessEngineConfiguration
- SQL脚本添加删除修改字段
热门文章
- 20150506—WinForm自动生成按钮&;按钮拖动
- asp.net 小技巧
- Java 字节流实现文件读写操作(InputStream-OutputStream)
- 进程通信---FIFO
- android:layout_weight越大所占比例越大和越大所占比例越小的两个例子
- 运行maven报错:经过检查是因为maven不兼容jdk1.6,重新安装1.7解决
- NSS_07 extjs中grid在工具条上的查询
- linux查看硬件信息
- thymeleaf 局部变量、属性优先级、注释
- Memcached 配置 和项目应用