解题思路
要求求出股票卖出的最大利益,最简单的方法是暴力解法。即利用双循环来解决。但是暴力解法无法通过,超出时间限制。所以根据题解,有了以下的代码。现在对以下的代码做个解读。
首先利用的是动态规划的思想。用两个变量,一个记录最小的价格,一个记录最大的利益,即minPrice和maxProfit。然后遍历。在遍历的过程中,如果当前的价格小于最小价格,那么就把当前的价格记录为最小价格。如果不满足条件,那么用当前价格 - 最小价格 ,如果该结果大于最大值,也就是说最大值就是这个差值。返回最大的差值。
代码
var maxProfit = function(prices) {
const len = prices.length;
let res = 0;
let minprice = Number.MAX_SAFE_INTEGER;
let maxprofit = 0;
for (let i = 0; i < len; i++) {
if (prices[i] < minprice) {
minprice = prices[i];
} else if (prices[i] - minprice > maxprofit) {
maxprofit = prices[i] - minprice;
}
}
return maxprofit;
};
const prices = [7,1,5,3,6,4];
const prices1 = [2,4,1]
console.log('--result--',maxProfit(prices1));
总结
思路很难想到,加油吧