题意:求连续元素之积最大。
思路:记录到当前元素为止,积的最大和最小值。因为存在负数,需要保存最小值。
class Solution {
public:
int maxProduct(vector<int>& nums) {
int maxp = 1;
for(unsigned i = 0; i < nums.size(); ++ i) {
maxp *= nums[i];
}
int maxt = nums[0];
int mint = nums[0];
int tempmin, tempmax;
maxp = max(maxt, maxp);
for(unsigned i =1 ; i < nums.size(); ++ i) {
tempmin = min(min(maxt * nums[i], mint * nums[i]), nums[i]);
tempmax = max(max(maxt * nums[i], mint * nums[i]), nums[i]);
maxp = max(maxp, tempmax);
maxt = tempmax;
mint = tempmin;
}
return maxp;
}
};