买股最佳时机

买卖股票的最佳时机

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

暴力法比较直接,贪心法比较美丽。

为啥可以用贪心呢?因为买必须在卖之前,因此每到一步都可以获取到这一步为止的最佳状态,不断这个最佳状态即可。

class Solution {
public:
    /**
     *
     * @param prices int整型vector
     * @return int整型
     */
    int maxProfit(vector &prices) {
        // write code here
        int minVal = prices[0], profit = 0;
        for (int i = 1; i < prices.size(); ++i) {
            if (prices[i] < minVal) minVal = prices[i];
            profit = max(profit, prices[i] - minVal);
        }
        return profit;
    }
};
刷遍天下无敌手 文章被收录于专栏

秋招刷题历程

全部评论
老哥,你这个代码过不了啊。
1 回复 分享
发布于 2021-06-09 14:50
profit = max(profit, prices[i] - minVal); if (prices[i] < minVal) minVal = prices[i]; 这样写,会更符合逻辑,先算结果,再更新minval, 这样如果出现[4 3],算到3时不会是0,而是 -1。 虽然说,原写法没问题,前提是结果一定大于0, 但是如果说一定要得买卖的话,有可能出现负的结果。
1 回复 分享
发布于 2021-05-21 21:02
这个思路,太漂亮了
点赞 回复 分享
发布于 2021-01-23 23:13

相关推荐

01-30 09:45
燕山大学 Java
喵_coding:这种直接跑就完事了 哪有毕业了才签合同 任何offer和三方都没有的
点赞 评论 收藏
分享
评论
71
6
分享

创作者周榜

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