vlambda博客
学习文章列表

经典算法四:股票的最大利润(动态规划)

今天分享一个高频算法题:股票的最大利润,此题也在算法导论里面出现

题目描述:

给你一个数组,每个数表示每天的股票价格,如果你只能进行一次交易(一次买入和卖出),怎么做到最大利润?

比如:[7, 1, 5, 3, 6, 4]。最大利润就是6-1。


解题思路(javascript):

1,找出第i天卖出的最大利润,那么只需要在求第i天的时候记住前面i-1天的最小值

2,比较每天最大利润,得最大值就是股票的最大利润。

提示:可以理解为新建一个数组max[], max[i]存储第i天的最大利润值,最后找出当前数组的最大值即股票最大的利润

function maxProfit(arr) { if (arr.length < 2) { return 0;    } let min = arr[0]; let max = arr[1] - min; if (arr.length == 2) { return max;    } for (var i = 2; i < arr.length; i++) { if (arr[i - 1] < min) { min = arr[i - 1]; } let diff = arr[i] - min; if (diff > max) { max = diff;        } } return max;}