问题描述
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
示例 1:
输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:
输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
解决思路
双层for循环
第一层for循环i确定子序列起点
第二层for循环确定子序列重点
在遍历的过程中对乘积进行比较
代码实现
package solution;
import abstracts.Int;
public class Solution6 {
public static void main(String[] args) {
int[] a=new int[]{2,3,-2,4};
new Solution6().maxProduct(a);
}
public int maxProduct(int[] nums) {
int max=nums[0];
for (int i=0;i<nums.length;i++){
int temp=1;//每个子序列的乘积
for (int j=i;j<nums.length;j++){
//累乘
temp*=nums[j];
//进行比较得出最大乘积
if(max<temp){
max=temp;
}
}
}
return max;
}
}