Max product subarray

这几天为了准备wap的tech interview,无意间看到了leetcode OJ,上面目前有150多道题目,粗粗浏览了一下都是质量较高的算法题,突然有了一种大一时候ACM的感觉,虽然很多都不熟悉了,还有一些从来没熟悉过...不过现在开始就是最好的时机~wap失败了还有其他国内公司的机会~


第四题: 求最大的子序列乘积 

开始的时候误入歧途,没有想到DP,currentMax和currentMin从单值变成数组问题就迎刃而解了,因为一路乘下去,下一刻只要不是当前最大(对应乘积为正)一定就是当前最小(对应乘积为负),DP方程可以这么写max(i) = max{ ai , ai * max( i - 1 ) , ai * min( i - 1 ) }, min(i) = min{ ai , ai * max( i - 1 ) , ai * min( i - 1 ) },源代码如下:

public class Solution {
    public int maxProduct(int[] A) {
        int currentMax[] = new int[99999];
        int currentMin[] = new int[99999];
        currentMax[0] = A[0];
        currentMin[0] = A[0];
        int value = currentMax[0];
       for(int i=1;ib)return a;
        else return b;
    }
    public int min(int a,int b){
        if(a

你可能感兴趣的:(LeetCode,JAVA之路)