题解 | #连续子数组的最大乘积#

连续子数组的最大乘积

https://www.nowcoder.com/practice/abbec6a3779940aab2cc564b22d36859

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int maxProduct(vector<int>& nums) {
        // write code here
        int n = nums.size();
        if (n == 0) return 0;

        int max_prod = nums[0], min_prod = nums[0], result = nums[0];
        int prev_max, prev_min;

        for (int i = 1; i < n; ++i) {
            prev_max = max_prod;
            prev_min = min_prod;

            max_prod = max({nums[i], prev_max * nums[i], prev_min * nums[i]});
            min_prod = min({nums[i], prev_max * nums[i], prev_min * nums[i]});

            result = max(result, max_prod);
        }

        return result;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务