2020.05.18乘积最大子数组
class Solution {
public int maxProduct(int[] nums) {
}
}
思路:
第一种做法肯定是包暴力解决,和上次一样,时间复杂度是n^2,但是这次肯定不能和上次一样,应该有一些进步才行。
首先要想好数据结构
有一个算法推算的过程
我们要计算的值是子数组的积,那么这个子数组能够记为p(n-m),我们要计算p(n-m)的最大值,我们先看一下p(n-m)有什么关系存在
p(n-m)=pm/pn
p()
做不出,还是暴力解决,解决完看答案
暴力解决思路
1,遍历数组,计算第一个值从头到尾的乘积,每次的结果和结果进行比较,选出最大值
2,第二个元素从第2个到最后一个计算乘积。。以此类推
花了10分钟就写好了,去测试一下
public int maxProduct(int[] nums) {
int max=Integer.MIN_VALUE;
//外层循环,循环整个数组,除了最后一个元素,分别计算该元素从自己的位置到最后一个的乘积
for (int i=