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

买卖股票的最好时机

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

这个题目其实就是求最大子区间和的问题
原理 一天的股票的增长相对于前一天来说是固定的,我们把第一天的增长定义为0,其实就是求增长和最大,即maxRes=max(maxRes.thisRes)套用最大子区间和的模板就可以,时间复杂度O(n),空间复杂度O(1)

class Solution {
public:
    /**
     *
     * @param prices int整型vector
     * @return int整型
     */
    int maxProfit(vector<int>& prices) {
        int maxvalue = 0;
        int cur = 0;
        for (int i = 1; i < prices.size(); i++) {
            int p=prices[i]-prices[i-1];
            cur += p;
            maxvalue = max(maxvalue, cur);
            cur = cur < 0 ? 0 : cur;
        }
        return maxvalue;
    }
};
全部评论

相关推荐

06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务