乘积最大子序列
题意:给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
思路:除去暴力法,这道题的另一种解法就是dp来维护我们想要的ans.
public int maxProduct(int[] nums) {
int ans = Integer.MIN_VALUE;
int maxans = 1;
int minans = 1;
for(int i = 0;i<nums.length;i++){
if(nums[i]<0){
int temp = maxans;
maxans = minans;
minans = temp;
}
maxans = Math.max(maxans*nums[i],nums[i]);
minans = Math.min(minans*nums[i],nums[i]);
ans = Math.max(ans,Math.max(maxans,minans));
}
return ans;
}