P75 连续子序列的最大乘积
算法 16 阅读
信号摘要
难度:Medium · 时长:05:05 · leetcode 152 · lintcode 191
未对外公开播放权限
点击查看说明
描述
这个题目说的是,给你一个整数数组,你要找到乘积最大的连续子序列,然后返回它的乘积。
比如说,给你的数组是: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;
}
}