leetcode 53. Maximum Subarray 、152. Maximum Product Subarray
2024-09-05 17:14:56
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;
}
};
最新文章
- Android系统默认对话框添加图片
- 如何实现修改FileUpload样式
- 解决问题:由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- boa服务器make错误
- tarjan总结
- Android Activity学习笔记(一)
- MVC中的统一验证机制
- 7 Ways to earn money on programming(转)
- linux上安装Oracle 11g R2 标准版 64位
- Groovy 设计模式 -- Strategy 模式
- 【Vue】组件watch props属性值
- 剑指offer(30)连续子数组和的最大值
- Eclipse如何导入DemoWeb.rar
- mysqldb mysql_config
- [error] 1507#0: *22 FastCGI sent in stderr: ";Primary script unknown"; while reading response header from upstream, client: 10.0.0.1, server: www.wordpress.com, request: ";GET /info.p
- iOS:第三方库使用非ARC编译
- 双向链表的实现——java
- Bert学习资料
- 黄聪:定制化WordPress后台自定义仪表盘
- C3P0连接池的配置与使用
热门文章
- 深入理解java虚拟机(2)
- JavaSE基础:泛型
- 006-Zabbix agent on Zabbix server is unreachable for 5 minutes
- linux下利用tcpdump抓包工具排查nginx获取客户端真实IP实例
- Spring Framework Part4 self-summeries-a simplified MVC framework
- 关于form表单回车自动刷新
- zabbix_server: error while loading shared libraries: libperconaserverclient.so.18
- vue-awesome-swiper 轮播图使用
- NOIP2016提高A组五校联考1总结
- Hibernate方法save、update、merge、saveOrUpdate及get和load的区别