152. 乘积最大子序列

mac2024-03-16  33

遍历记录乘积最大值即可。

由于存在负数,遍历时需要同时保存最大值和最小值,当当前遍历元素为负数时,之前保存的最大值和最小值交换。

public class Solution { public int MaxProduct(int[] nums) { int res = int.MinValue; int a = 1; int b = 1; for(int i = 0; i < nums.Length; i++) { if(nums[i] < 0) { a = a + b; b = a - b; a = a - b; } a = a * nums[i] > nums[i] ? a*nums[i]:nums[i]; b = b * nums[i] < nums[i] ? b*nums[i]:nums[i]; res = a > res ? a : res; } return res; } }

 

最新回复(0)