53. Maximum Subarray

之前的值小于0就不加了。dp[i]表示以i结尾当前的最大和,所以需要用一个变量保存最大值。

动态规划的方法:

class Solution {
public:
int maxSubArray(vector<int>& nums) {
vector<int> dp(nums.size());
int res = INT_MIN;
for(int i = ;i < nums.size();i++){
dp[i] = nums[i];
if(i > && dp[i-] >= )
dp[i] += dp[i-];
res = max(res,dp[i]);
}
return res;
}
};

152. Maximum Product Subarray

最小值可能是负数,这个值可能变成最大值。

dp[i]表示以i结尾当前的最大乘积,所以需要用一个变量保存最大值。

为什么每次要与nums[i]做对比,因为数组中可能存在0

动态规划的方法:

class Solution {
public:
int maxProduct(vector<int>& nums) {
vector<int> dp_max(nums.size());
vector<int> dp_min(nums.size());
dp_max[] = nums[];
dp_min[] = nums[];
int res = nums[];
for(int i = ;i < nums.size();i++){
dp_max[i] = max(dp_max[i-] * nums[i],max(dp_min[i-] * nums[i],nums[i]));
dp_min[i] = min(dp_max[i-] * nums[i],min(dp_min[i-] * nums[i],nums[i]));
res = max(res,dp_max[i]);
}
return res;
}
};

非动态规划,节省空间的方法:

https://blog.csdn.net/whuwangyi/article/details/39577455解法3

class Solution {
public:
int maxProduct(vector<int>& nums) {
int max = nums[];
int pre_max = nums[],pre_min = nums[];
int cur_max,cur_min;
for(int i = ;i < nums.size();i++){
cur_max = compare_max(pre_max*nums[i],pre_min*nums[i],nums[i]);
cur_min = compare_min(pre_max*nums[i],pre_min*nums[i],nums[i]);
pre_max = cur_max;
pre_min = cur_min;
max = cur_max > max ? cur_max : max;
}
return max;
}
int compare_max(int a,int b,int c){
int max = a;
if(b > max)
max = b;
if(c > max)
max = c;
return max;
}
int compare_min(int a,int b,int c){
int min = a;
if(b < min)
min = b;
if(c < min)
min = c;
return min;
}
};

最新文章

  1. Android系统默认对话框添加图片
  2. 如何实现修改FileUpload样式
  3. 解决问题:由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
  4. boa服务器make错误
  5. tarjan总结
  6. Android Activity学习笔记(一)
  7. MVC中的统一验证机制
  8. 7 Ways to earn money on programming(转)
  9. linux上安装Oracle 11g R2 标准版 64位
  10. Groovy 设计模式 -- Strategy 模式
  11. 【Vue】组件watch props属性值
  12. 剑指offer(30)连续子数组和的最大值
  13. Eclipse如何导入DemoWeb.rar
  14. mysqldb mysql_config
  15. [error] 1507#0: *22 FastCGI sent in stderr: &quot;Primary script unknown&quot; while reading response header from upstream, client: 10.0.0.1, server: www.wordpress.com, request: &quot;GET /info.p
  16. iOS:第三方库使用非ARC编译
  17. 双向链表的实现——java
  18. Bert学习资料
  19. 黄聪:定制化WordPress后台自定义仪表盘
  20. C3P0连接池的配置与使用

热门文章

  1. 深入理解java虚拟机(2)
  2. JavaSE基础:泛型
  3. 006-Zabbix agent on Zabbix server is unreachable for 5 minutes
  4. linux下利用tcpdump抓包工具排查nginx获取客户端真实IP实例
  5. Spring Framework Part4 self-summeries-a simplified MVC framework
  6. 关于form表单回车自动刷新
  7. zabbix_server: error while loading shared libraries: libperconaserverclient.so.18
  8. vue-awesome-swiper 轮播图使用
  9. NOIP2016提高A组五校联考1总结
  10. Hibernate方法save、update、merge、saveOrUpdate及get和load的区别