Algo: maxSubArray vs. maxProduct
2024-09-06 20:47:43
这两个问题类似,都可利用动态规划思想求解。
一、最大连续子序列和
https://leetcode.com/problems/maximum-subarray/description/
https://www.geeksforgeeks.org/largest-sum-contiguous-subarray/
The core ideas are the same:
currentMax = max(nums[i], some_operation(currentMax, nums[i])).
For each element, we have 2 options: put it inside a consecutive subarray, or start a new subarray with it.
#include <vector> int maxSubArray(std::vector<int>& nums)
{
if (nums.empty())
{
return ;
} int currMax = nums[];
int maxResult = nums[]; int size = (int)nums.size();
for (int i = ; i < size; ++i)
{
currMax = std::max(nums[i], currMax + nums[i]);
maxResult = std::max(maxResult, currMax);
} return maxResult;
}
二、最大连续子序列积
https://stackoverflow.com/questions/25590930/maximum-product-subarray
https://leetcode.com/problems/maximum-product-subarray/description/
https://www.geeksforgeeks.org/maximum-product-subarray/
https://www.geeksforgeeks.org/maximum-product-subarray-added-negative-product-case/
https://www.geeksforgeeks.org/maximum-product-subarray-set-2-using-two-traversals/
#include <vector> int maxProduct(std::vector<int>& nums)
{
if (nums.empty())
{
return ;
} int size = (int)nums.size(); int currMax = nums[];
int currMin = nums[];
int maxResult = nums[]; for (int i = ; i < size; ++i)
{
int t_currMax = currMax * nums[i];
int t_currMin = currMin * nums[i]; currMax = max(nums[i], max(t_currMax, t_currMin));
currMin = min(nums[i], min(t_currMax, t_currMin));
maxResult = max(maxResult, currMax);
} return maxResult;
}
最新文章
- 【编辑器】【Sublime Text】使用笔记
- Web——在淘宝搜索到看到商品
- php实现的IMEI限制的短信验证码发送类
- JQuery事件的链式写法
- codeforces 300E Empire Strikes Back 数论+二分查找
- 配置tomcat,java运行环境
- JSF 2 panelGrid example
- SpringUtil
- AWS IAM (Identity and Access Management) 使用笔记
- js一些方法的扩展
- 数学概念——A 几何概型
- js dom操作获取节点的一些方法
- 菜鸟学SSH(十八)——Hibernate动态模型+JRebel实现动态创建表
- sort()没有返回值
- day 23 对象的名称空间 类,对象属性和方法 封装 接口提供
- AndroBench手机性能测试
- day94
- web移动端浮层滚动阻止window窗体滚动JS/CSS处理
- HDFS格式化namenode后启动集群datanode不启动
- Intent在Activity之间传值的几种方式