难度:中等。
标签:
跟和最大的子数字比较像,但不一样,需要考虑负负为正的问题。没写出来,看题解。哭了。
正确解法:
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n = nums.size();
vector<int> maxNum(n), minNum(n);
int ans = nums[0];
maxNum[0] = nums[0];
minNum[0] = nums[0];
for(int i = 1; i < n; ++i){
maxNum[i] = max(maxNum[i - 1] * nums[i], max(minNum[i - 1] * nums[i], nums[i]));
minNum[i] = min(maxNum[i - 1] * nums[i], min(minNum[i - 1] * nums[i], nums[i]));
ans = max(ans, maxNum[i]);
}
return ans;
}
};
结果: