题目来源:

https://leetcode-cn.com/problems/maximum-product-subarray/

题目描述:

LeetCode152.乘积最大子序列

代码如下:

class Solution {
	public int maxProduct(int[] nums) {
		if (nums == null || nums.length == 0) {
			return 0;
		}
		// 由于可能存在负数,所以必须同时存储最大值和最小值
		int max = nums[0], min = nums[0], result = nums[0]; // 存储最后的结果
		for (int i = 1; i < nums.length; i++) {
			int temp = max;
			// 如果nums[i]是整数,那么和max相乘一定最大,
			// 如果nums[i]是负数,且min也是负数,那么这两个相称最大
			// 否则可能nums[i]最大。求最小同样如此
			max = Math.max(Math.max(max * nums[i], min * nums[i]), nums[i]);
			min = Math.min(Math.min(temp * nums[i], min * nums[i]), nums[i]);
			result = max > result ? max : result;
		}
		return result;
	}
}

 

相关文章:

  • 2021-09-27
  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2020-01-06
  • 2021-10-18
猜你喜欢
  • 2022-01-28
  • 2022-12-23
  • 2021-11-06
  • 2021-04-03
  • 2022-12-23
  • 2021-10-26
  • 2021-08-12
相关资源
相似解决方案