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;
}
代码解释
初始化:
minPrice
:初始设置为第一个价格。maxProfit
:初始设置为0。
遍历价格数组:
- 对于每一天的价格,检查是否比当前的
minPrice
更低,如果是,则更新minPrice
。 - 计算当前利润,即当前价格减去
minPrice
。 - 如果当前利润大于
maxProfit
,则更新maxProfit
。
- 对于每一天的价格,检查是否比当前的
返回结果:
- 遍历完成后,
maxProfit
将包含最大利润值。
- 遍历完成后,
关键点
- 时间复杂度:O(n),因为只需要遍历一次价格数组。
- 空间复杂度:O(1),只使用了常数级的额外空间。
这个代码适用于简单的股票买卖问题,只能进行一次买入和一次卖出。如果有更复杂的交易策略或约束条件,可能需要更复杂的算法。