经典算法四:股票的最大利润(动态规划)
今天分享一个高频算法题:股票的最大利润,此题也在算法导论里面出现
题目描述:
给你一个数组,每个数表示每天的股票价格,如果你只能进行一次交易(一次买入和卖出),怎么做到最大利润?
比如:[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;
}