股票最大利润:算法详解及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;
    }
};

代码解释:

  1. 初始化 minPriceprices[0],表示初始的最低买入价格。
  2. 初始化 maxProfit 为 0,表示初始的最大利润。
  3. 遍历 prices 数组,从第 1 个元素开始。
  4. 如果当前价格 prices[i] 小于 minPrice,更新 minPriceprices[i]
  5. 计算当前的收益 profit,即 prices[i] - minPrice
  6. 如果 profit 大于 maxProfit,更新 maxProfitprofit
  7. 最后返回 maxProfit

总结: 本文详细介绍了如何计算股票交易中的最大利润,并提供了详细的算法思路和C++代码实现。通过遍历数组,记录最小买入价格,并计算当前收益与最大收益的比较,最终得出最大利润。

股票最大利润:算法详解及C++代码实现

原文地址: https://www.cveoy.top/t/topic/ozjf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录