leetcode_Maximum Product Subarray

来源:互联网 发布:windows开机不显示壁纸 编辑:程序博客网 时间:2024/06/05 11:39

这个是最大子序列乘积问题,之前有看过最大子序列和,那个比较简单,在我前面也有写过:

最大子序列和传送门:http://blog.csdn.net/alps1992/article/details/38072329

这个乘积其实和那个比较像,但是有个问题,就是可能出现负数相乘为正成为最大的数,所以需要维护的变量是两个,而不是一个了~

代码如下:



class Solution{public:    int maxProduct(int A[], int n){        int max = A[0];        int min = A[0];        int maxProductNum = A[0];        int maxNum = A[0],minNum = A[0];        int i = 1;        for (i = 1; i < n; i++) {            max = Max(Max(maxNum*A[i], minNum*A[i]), A[i]);            min = Min(Min(maxNum*A[i], minNum*A[i]), A[i]);            maxProductNum = Max(max, maxProductNum);            maxNum = max;            minNum = min;        }        return maxProductNum;    }    int Max(int a, int b){        return a>b?a:b;    }    int Min(int a, int b){        return a<b?a:b;    }};


0 0
原创粉丝点击