买卖股票的最佳时机(C++)

简介: 买卖股票的最佳时机(C++)
买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

输入: prices = [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

提示:

  • 1 <= prices.length <= 105
  • 0 <= prices[i] <= 104

我的代码:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int INF = 1000000;
        int minp = INF, maxp = 0;
        // 这个题的本质就是从前往后看 找到当前已知的最下的数字, 然后用未来最大的数字减去他
        for (auto price: prices)
        {
            maxp = max(maxp, price - minp);
            minp = min(price, minp);
        }
        return maxp;
    }
};

对应我的掘金文章:https://juejin.cn/post/7147300172584714277

相关文章
|
2月前
|
算法
《LeetCode》—— 买卖股票的最佳时机
《LeetCode》—— 买卖股票的最佳时机
|
4月前
leetcode-714:买卖股票的最佳时机含手续费
leetcode-714:买卖股票的最佳时机含手续费
20 0
|
2月前
|
算法
leetcode121. 买卖股票的最佳时机
leetcode121. 买卖股票的最佳时机
14 0
|
4月前
|
算法
leetcode-121:买卖股票的最佳时机
leetcode-121:买卖股票的最佳时机
23 0
|
4月前
|
算法
leetcode-123:买卖股票的最佳时机 III
leetcode-123:买卖股票的最佳时机 III
23 0
|
11月前
|
算法
买卖股票的最佳时机II
买卖股票的最佳时机II
44 0
|
算法
leetcode 714 买卖股票的最佳时机含手续费
leetcode 714 买卖股票的最佳时机含手续费
68 0
leetcode 714 买卖股票的最佳时机含手续费
|
算法
leetcode 122 买卖股票的最佳时机
leetcode 122 买卖股票的最佳时机
76 0
leetcode 122 买卖股票的最佳时机
leetcode 121 买卖股票的最佳时机
leetcode 121 买卖股票的最佳时机
63 0
leetcode 121 买卖股票的最佳时机
|
算法
LeetCode 122. 买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
60 0