写在前面
昨晚做某厂前端笔试题,编程有一道是leetcode 152的乘积最大连续子序列,因为算法掌握特别不扎实,所以事后一搜索,这题用的是动态规划方法解。事实上,到现在也没有太懂动态规划究竟是什么思想,但基本上理解了这题的思路。网络上大部分前辈的代码都是基于Java or C++,两年前C++我也可QAQ,但两年的硕士生活让我忘记了计算机专业的所有的基本。由于在准备前端,最近恶补了一下JavaScript,目前是我写的最顺手的语言。
前言说的有点多,下面切正片。
题目描述:
找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
例如, 给定序列[2,3,-2,4]
,其中乘积最大的子序列为[2,3]
其乘积为6
。
我的注: 这个示例输入输出让荒唐的我把这道题荒唐地理解成了只包含两元素的最大值,于是有了下面这段荒唐的代码(可以不用看)
function maxProduct(nums) {
let mul = [],
result = null;
if(nums.length === 1){
return nums[0];
}