152. Maximum Product Subarray

가장 큰 곱을 갖는 하위 배열을 찾고 그 곱을 반환

class Solution {
    
    // Brute Forse
    // T: O(n^2)
    public int maxProduct(int[] nums) {
        int res = nums[0];

        for (int i = 0; i < nums.length; i++) {
            int accu = 1;
            for (int j = i; j < nums.length; j++) {
                accu *= nums[j];
                res = Math.max(res, accu);
            }
        }
        
        return res;
    }
}
class Solution {
    
    // Dynamic Programming
    // T: O(n)
    public int maxProduct(int[] nums) {
        int res = nums[0];

        int max = 1, min = 1;

        for (int n : nums) {
            int tmp = max * n;
            
            max = Math.max(n, Math.max(tmp, min * n));
            min = Math.min(n, Math.min(tmp, min * n));
            
            res = Math.max(res, max);
        }
        
        return res;
    }
}





© 2017. by yeopoong.github.io

Powered by yeopoong