C++ 计算股票最大利润的代码

在 C++ 中,计算股票的最大利润问题通常涉及找出最佳的买入和卖出时机,以获得最大的利润。假设你只能进行一次买入和一次卖出,以下是一个示例代码:

cpp
#include <iostream> #include <vector> #include <algorithm> using namespace std; int maxProfit(const vector<int>& prices) { if (prices.empty()) return 0; int minPrice = prices[0]; // 初始化最低价格为第一天的价格 int maxProfit = 0; // 初始化最大利润为0 for (int i = 1; i < prices.size(); ++i) { // 更新最低价格 if (prices[i] < minPrice) { minPrice = prices[i]; } // 计算当前利润 int profit = prices[i] - minPrice; // 更新最大利润 if (profit > maxProfit) { maxProfit = profit; } } return maxProfit; } int main() { vector<int> prices = {7, 1, 5, 3, 6, 4}; // 示例股票价格 cout << "最大利润是: " << maxProfit(prices) << endl; return 0; }

代码解释

  1. 初始化

    • minPrice:初始设置为第一个价格。
    • maxProfit:初始设置为0。
  2. 遍历价格数组

    • 对于每一天的价格,检查是否比当前的 minPrice 更低,如果是,则更新 minPrice
    • 计算当前利润,即当前价格减去 minPrice
    • 如果当前利润大于 maxProfit,则更新 maxProfit
  3. 返回结果

    • 遍历完成后,maxProfit 将包含最大利润值。

关键点

  • 时间复杂度:O(n),因为只需要遍历一次价格数组。
  • 空间复杂度:O(1),只使用了常数级的额外空间。

这个代码适用于简单的股票买卖问题,只能进行一次买入和一次卖出。如果有更复杂的交易策略或约束条件,可能需要更复杂的算法。