121. 买卖股票的最佳时机

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

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

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

121. 买卖股票的最佳时机

最终解答:
**方法一:**遍历一遍数组,计算每次 到当天为止 的最小股票价格和最大利润。

class Solution {
    public int maxProfit(int[] prices) {
        int ans=0;
        int minPrice=prices[0];
        for(int i=1;i<prices.length;i++){
            ans=Math.max(ans,prices[i]-minPrice);
            if(minPrice>prices[i]){
                minPrice=prices[i];
            }
        }
        return ans;
    }
}

方法二:
121. 买卖股票的最佳时机

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int n = prices.size();
        if (n == 0) return 0; // 边界条件
        int minprice = prices[0];
        vector<int> dp (n, 0);

        for (int i = 1; i < n; i++){
            minprice = min(minprice, prices[i]);
            dp[i] = max(dp[i - 1], prices[i] - minprice);
        }
        return dp[n - 1];
    }
};

上一篇:LeetCode 第9题 回文数 C语言 (新思路)


下一篇:121. 买卖股票的最佳时机