!!!题解 | 买卖股票的最好时机(一) 贪心思路 妙 学之

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

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

#include <algorithm>
#include <climits>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param prices int整型vector 
     * @return int整型
     */
    int maxProfit(vector<int>& prices) {
        // write code here
        //暴力法 超时
        //这题关键是用贪心法融合进动态规划。
        /*
        由于买在卖前面,所以对每个元素来说 如果在这个元素卖出 买入的时机应该是这个元素前的最低点。
        可以用一个变量记录这个最低点。那么所有在这个最低点后面的元素都可以在这一点买入。
        同时 这个最低点是及时更新的 由于数组从左到右 卖出也在买入后面,所以【i】-最低点一定是这个元素卖出得到的最大收益。
        而因为不需要存储信息 所以只需要一个变量记录最大收益就行了
        */
        int size=prices.size();
        if (size<2) {
            return 0;
        }
        //int low=0;//不应该初始化为0,应该是price【0】
        int low=prices[0];
        //如果不能获取到任何利润,请返回0
        int res=0;
        for(int i=1;i<size;i++){
            int profit=prices[i]-low;
            res=max(res, profit);
            if(prices[i]<low)low=prices[i];
        }
        return res;
    }
};

全部评论

相关推荐

04-03 22:41
兰州大学 C++
老六f:有时候是HR发错了,我之前投的百度的后端开发,他给我发的算法工程师,但是确实面的就是百度开发
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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