买卖股票的最佳时机
ZZK520 opened this issue · comments
给定一个数组 prices
,它的第 i 个元素 prices[i]
表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
低买高卖,假设在最低点当天买入,那么此后的每一天卖出都会有一个利润,取其中最大值。
var maxProfit = function (prices) {
if(!prices.length) return 0;
let maxProfit=0;
let minBuyPrice=prices[0];
for (const price of prices) {
/**设置最低买入价格,每日价格在浮动,但是最低点可能两三天才更新。
* 对于同一个最低点,后面的卖出价格越高,利润越高
* */
minBuyPrice=Math.min(price,minBuyPrice);
// 之前最大利润与当前卖出利润取最大值
maxProfit=Math.max(maxProfit,price-minBuyPrice);
}
return maxProfit;
};
// const arr = [4,6,2,3];
const arr = [7, 1, 5, 3, 6, 4];
const res=maxProfit(arr);
console.log(res);
去pr哇
在算法这栏开个DP专题?
开个DP专题?
这个得看册子这一部分的整体架构,取决于用到的数据结构划分还是用算法划分(比如后期是否会加入些栈、队列的数据结构)?
我是看到既有的分栏标题(矩阵相关、链表、二叉树)用的都是数据结构,所以这里直接用了数组作为标题。
股票这个更适合双胞胎专题hh,股票有6-8个题来着,这个就不建议按照解题思路来整理了
我先关了。