返回轨道
算法 · 2026-05-14 · 16 阅读

P75 连续子序列的最大乘积

算法 16 阅读

信号摘要

难度:Medium · 时长:05:05 · leetcode 152 · lintcode 191

P75 连续子序列的最大乘积

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个整数数组,你要找到乘积最大的连续子序列,然后返回它的乘积。

比如说,给你的数组是:

8, 1, -2, 4, -1

这个数组中连续子序列的最大乘积是 64,连续子序列就是数组本身。

相关视频:21. 连续子序列的最大和

代码

public class AlgoCasts {

  private int max(int a, int b, int c) {
    return Math.max(Math.max(a, b), c);
  }

  private int min(int a, int b, int c) {
    return Math.min(Math.min(a, b), c);
  }

  // Time: O(n), Space: O(1)
  public int maxProductOfSubArray(int[] nums) {
    if (nums == null || nums.length == 0) return 0;
    int max = nums[0], curMax = nums[0], curMin = nums[0];
    for (int i = 1; i < nums.length; ++i) {
      int a = curMax * nums[i], b = curMin * nums[i], c = nums[i];
      curMax = max(a, b, c);
      curMin = min(a, b, c);
      max = Math.max(max, curMax);
    }
    return max;
  }

}

📡 通讯频道