解题思路
此时负数的出现就导致原本的最小值一下子变成了最大值,原本的最大值一下子变成了最小值,所以我们就需要同时记录这两个数值,因为没准后面是什么情况,没准现在找到的最小值就会成为最终结果的最大值。
代码实现
class Solution {
public:
int maxProduct(vector
<int>& nums
) {
if(nums
.empty()) return 0;
int maxx
= nums
[0];
vector
<int> fmax(nums
), fmin(nums
);
for(int i
= 1; i
< nums
.size(); ++i
)
{
fmax
[i
] = max(max(fmax
[i
- 1] * nums
[i
], fmin
[i
- 1] * nums
[i
]), nums
[i
]);
fmin
[i
] = min(min(fmax
[i
- 1] * nums
[i
], fmin
[i
- 1] * nums
[i
]), nums
[i
]);
maxx
= max(fmax
[i
], maxx
);
}
return maxx
;
}
};
转载请注明原文地址:https://blackberry.8miu.com/read-27088.html