天天看点

leetcode121——Best Time to Buy and Sell Stock

题目大意:给出股票价格数组,只允许买卖一次,求最大收益

分析:股票问题采用动态规划。但是这道入门题只允许买卖一次,有更简单的方法——一次遍历:遍历数组时维护当前的最低点,每一天都计算当天与当前最低点的差值,这就是收益,取收益最大值即可。

代码:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int minPrice = 0x3f3f3f3f,ans = 0;
        for(int price : prices){
            ans = max(ans,price - minPrice);
            minPrice = min(minPrice,price);
        }
        return ans;
    }
};