题解 | #买卖股票的最好时机(一)#

买卖股票的最好时机(一)

https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec

class Solution {
public:
    /**
     * 
     * @param prices int整型vector 
     * @return int整型
     */
    // 自己写 O(n) O(1) 
    // dp数组记录 当前天为止的最大利润
    int maxProfit(vector<int>& prices) {
        // write code here
        int n = prices.size();

        if(n<2)
        {
            return 0;
        }

        if(n==2)
        {
            int ans = prices[1] - prices[0];

            return ans>0 ? ans : 0;
        }

        int minp = 10001; // 一直维护前面的最小值
        minp = min(prices[0], prices[1]);
        int pre = (prices[1] - prices[0])>0 ? (prices[1] - prices[0]) : 0;
        int cur = 0, ans = 0;
        for(int i=2; i<n; ++i)
        {
            int a  = prices[i] - minp;
            cur = max(pre, a); // 对比 今天不卖出 和 今天卖出的情况
            // 更新
            pre = cur;
            minp = min(minp, prices[i]);

            ans = max(ans, cur);


        }

        return ans;
    }
};

自己的做法

全部评论

相关推荐

换个名字Z:我在小红书和牛客刷到不下于5篇自愿无薪实习的(姿态降的像奴才一样),环境就是被这些人搞差的恶而不自知
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务