最大子区域问题也是笔试面试非常常见的问题,典型的就是数组的最大子串和矩阵的最大子矩阵,一般伴随着求和求积这类操作。
下面我们就来研究一下。
53. Maximum Subarray
题意:
最大子区域问题的最经典类型就是数组的最大子区间和问题
思路:
dp枚举每个位置,动态维护以当前元素为结尾的最大子区间和总最大子区间,转移只需要与前项比较即可
代码:
/*
Author Owen_Q
*/
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int re=0;
int remax = nums[0];
for(int i:nums)
{
re = max(re+i,i);
remax = max(remax,re);
}
return remax;
}
};
152. Maximum Product Subarray
题意:
数组最大子区区间和问题的第一个变种就是数组最大子区间积问题
思路:
同样是数组最大子区间问题,大体思路都是一样的,唯一要解决的问题就是,负数乘法会把原来最小值