股票最大利润:算法详解及C++代码实现
股票最大利润:算法详解及C++代码实现
问题描述:
给定一个数组 prices,其中 prices[i] 表示给定股票第 i 天的股价。你需要在某一天买入这只股票,并在未来的某个不同的日子卖出它。请计算你能从中获取的最大收益。
输入:
一个整数数组 prices。
输出: 你可以从这笔交易中获得的最大利润。如果不能获利,返回 0。
约束条件:
- 1 <=
prices.length<= 10^5 - 0 <=
prices[i]<= 10^4
算法思路:
遍历整个数组,用一个变量 minPrice 记录当前遍历到的最小值。然后用当前的价格减去 minPrice,得到当前的收益,与之前的最大收益比较,更新最大收益。
这样做的原理是,我们想要获得最大的收益,就要在最低点买入,在最高点卖出,因此我们要不断更新最低点,并计算当前的收益。
C++ 代码实现:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
if(n == 0) return 0;
int minPrice = prices[0];
int maxProfit = 0;
for(int i = 1; i < n; i++){
if(prices[i] < minPrice){
minPrice = prices[i];
}
int profit = prices[i] - minPrice;
if(profit > maxProfit){
maxProfit = profit;
}
}
return maxProfit;
}
};
代码解释:
- 初始化
minPrice为prices[0],表示初始的最低买入价格。 - 初始化
maxProfit为 0,表示初始的最大利润。 - 遍历
prices数组,从第 1 个元素开始。 - 如果当前价格
prices[i]小于minPrice,更新minPrice为prices[i]。 - 计算当前的收益
profit,即prices[i] - minPrice。 - 如果
profit大于maxProfit,更新maxProfit为profit。 - 最后返回
maxProfit。
总结: 本文详细介绍了如何计算股票交易中的最大利润,并提供了详细的算法思路和C++代码实现。通过遍历数组,记录最小买入价格,并计算当前收益与最大收益的比较,最终得出最大利润。
原文地址: https://www.cveoy.top/t/topic/ozjf 著作权归作者所有。请勿转载和采集!