要找一个值,减去前面最小的,那么就得到最大利润了

    1. class Solution {
    2. public:
    3. int maxProfit(vector<int>& prices) {
    4. if(!prices.size()) return 0;
    5. int minval = prices[0];
    6. int res = 0;
    7. for(int i = 1; i < prices.size(); i++)
    8. {
    9. int tmp = prices[i];
    10. prices[i] = tmp - minval;
    11. minval = min(minval, tmp);
    12. res = max(res, prices[i]);
    13. }
    14. return res;
    15. }
    16. };

    第二次写题

    1. class Solution {
    2. public:
    3. int maxProfit(vector<int>& prices) {
    4. if(!prices.size()) return 0;
    5. vector<int> res(prices.size());
    6. int minval = prices[0];
    7. int maxval = INT_MIN;
    8. for(int i = 0; i < prices.size(); i++)
    9. {
    10. res[i] = prices[i] - minval;
    11. minval = min(minval, prices[i]);
    12. maxval = max(maxval, res[i]);
    13. }
    14. return maxval;
    15. }
    16. };