想到了动态规划,但是一直不知道该怎么处理负数
想到了负负得正,但是没有进一步想到得正之后在进行一次比较
class Solution {
public:
int maxProduct(vector<int>& nums)
{
if (nums.size() == 0)
return 0;
if (nums.size() == 1)
return nums[0];
int max_local = nums[0];//局部最大值
int min_local = nums[0];//局部最小值
int global = nums[0];//全局最大值
for (int i = 1; i < nums.size(); ++i) {
int max_copy = max_local;
max_local = max(max(nums[i] * max_local, nums[i]), nums[i] * min_local);
min_local = min(min(nums[i] * max_copy, nums[i]), nums[i] * min_local);
global = max(global, max_local);
}
return global;
}
};