您的位置:首页 > 其它

解题报告:乘积最大子序列

2015-07-08 11:19 344 查看
http://www.lintcode.com/zh-cn/problem/maximum-product-subarray/

找出一个序列中乘积最大的连续子序列(至少包含一个数)。

您在真实的面试中是否遇到过这个题?

样例

比如, 序列
[2,3,-2,4]
中乘积最大的子序列为
[2,3]
,其乘积为
6


标签 Expand

相关题目 Expand
其实就是3中情况 整数 和负数 和0相乘

所以0起到隔断的作用

负数和整数相乘会更小,所以要找最小数

整数和整数相乘会更大,所以要找最大数

class Solution {
public:
/**
* @param nums: a vector of integers
* @return: an integer
*/
int maxProduct(vector<int>& nums) {
// write your code here
if (nums.size() <= 0)return 0;
int minx = nums[0];
int maxx = nums[0];
int mint = 1;
int maxt = 1;
int maxv=nums[0];
for (int i = 1; i<nums.size(); i++){
if (nums[i] == 0){
minx = 1;
maxx = 1;
}
else{
mint =minx;
maxt =maxx;
minx = min(min(mint*nums[i], nums[i]), maxt*nums[i]);
maxx = max(max(mint*nums[i], nums[i]), maxt*nums[i]);
maxv = max(maxv, maxx);
}
}
return maxv;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: