LeetCode第121题-买卖股票的最佳时机
题目要求
给定一个数组prices
,它的第i
个元素prices[i]
表示一支给定股票第i
天的价格。
你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
举例
输入:[7,1,5,3,6,4]
输出:5
输入:prices = [7,6,4,3,1]
输出:0
思路
- 因为数据大小不固定,就会有很多情况
- 定义一个值,用来存放某一天的值,计算后续天数的差值
- 如果有个值比定义的值小了,那么定义的值改为这个小的,继续计算后续的
- 每种情况计算出发放到个数组里,最后比较数组的最大值
代码实现一
/*** @param {number[]} prices* @return {number}*/
var maxProfit = function (prices) {let result = [0] // 结果,存放所有情况的利润let vernier = 0 // result的下标let start = prices[0] // 当前买入的钱for (let i = 1; i < prices.length; i++) {if (start > prices[i]) {start = prices[i];vernier++result[vernier] = 0}else {result[vernier] = result[vernier] > (prices[i] - start) ? result[vernier] : (prices[i] - start)}}return Math.max(...result)
};