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

Posted 算法那些事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典算法四:股票的最大利润(动态规划)相关的知识,希望对你有一定的参考价值。

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

题目描述:

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

比如:[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;}

以上是关于经典算法四:股票的最大利润(动态规划)的主要内容,如果未能解决你的问题,请参考以下文章

算法刷题:LC初级算法动态规划类

动态规划买卖股票的最佳时机II

LeetCode-动态规划买卖股票的最佳时机

352 买卖股票的good时机和最大子数组(todo,动态规划)

leetcode-买卖股票的最佳时机(动态规划)

492,动态规划和贪心算法解买卖股票的最佳时机 II