题目地址

解题思路

要求求出股票卖出的最大利益,最简单的方法是暴力解法。即利用双循环来解决。但是暴力解法无法通过,超出时间限制。所以根据题解,有了以下的代码。现在对以下的代码做个解读。

首先利用的是动态规划的思想。用两个变量,一个记录最小的价格,一个记录最大的利益,即minPrice和maxProfit。然后遍历。在遍历的过程中,如果当前的价格小于最小价格,那么就把当前的价格记录为最小价格。如果不满足条件,那么用当前价格 - 最小价格 ,如果该结果大于最大值,也就是说最大值就是这个差值。返回最大的差值。

代码

  1. var maxProfit = function(prices) {
  2. const len = prices.length;
  3. let res = 0;
  4. let minprice = Number.MAX_SAFE_INTEGER;
  5. let maxprofit = 0;
  6. for (let i = 0; i < len; i++) {
  7. if (prices[i] < minprice) {
  8. minprice = prices[i];
  9. } else if (prices[i] - minprice > maxprofit) {
  10. maxprofit = prices[i] - minprice;
  11. }
  12. }
  13. return maxprofit;
  14. };
  15. const prices = [7,1,5,3,6,4];
  16. const prices1 = [2,4,1]
  17. console.log('--result--',maxProfit(prices1));

总结

思路很难想到,加油吧