题目链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/
一次遍历:O(n)
为什么说这道题经典呢,其实是答案更加的经典:

public class Solution {
public int MaxProfit(int[] prices) {
int minprice = int.MaxValue;
int maxprofit = 0;
for (int i = 0; i < prices.Length; i++)
{
if (prices[i]<minprice)
{
minprice = prices[i];
}
else if (prices[i]-minprice>maxprofit)
{
maxprofit = prices[i] - minprice;
}
}
return maxprofit;
}
}
使我们感兴趣的点是上图中的峰和谷。我们需要找到最小的谷之后的最大的峰。 我们可以维持两个变量——minprice 和 maxprofit,它们分别对应迄今为止所得到的最小的谷值和最大的利润(卖出价格与最低价格之间的最大差值)。
本文深入探讨了LeetCode上的经典问题“最佳买卖股票时机”,通过一次遍历实现O(n)的时间复杂度。文章详细介绍了如何利用minprice和maxprofit两个变量来寻找最佳买卖点,以获得最大利润。

646

被折叠的 条评论
为什么被折叠?



