/**
* @param {number[]} nums
* @return {number}
*/
var maxProduct = function(nums) {// 动态规划一般都需要建立一个或多个数(组),用来存储状态信息
var len = nums.length;
if(len === 0){
return 0;
}
var max = nums[0];
var tmpmax = nums[0];
var tmpmin = nums[0];
nums.shift();
nums.forEach(function(item){
tmp = tmpmax;
tmpmax = Math.max(Math.max(tmpmax*item,tmpmin*item),item);
tmpmin = Math.min(Math.min(tmp*item,tmpmin*item),item);
if(tmpmax > max){
max = tmpmax;
}
});
return max;
};
典型的动态规划:
动态规划的题的一个特点就是,很有可能需要建立一个或多个额外的数组或者数字,用来保存状态信息。
这种找最大最小值的题应该善用多级的Math.max/Math.min函数。这种题型的感觉遇到了好几道了。