题解 | #股票(无限次交易)#

股票(无限次交易)

http://www.nowcoder.com/practice/9e5e3c2603064829b0a0bbfca10594e9

贪心解法, 写的不对的欢迎指正!
时间:O(n)
空间:O(1)

// NC134股票(无限次交易)
//最大利润即为每个上升段的差额
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算最大收益
     * @param prices int整型vector 股票每一天的价格
     * @return int整型
     */
    int maxProfit(vector<int>& prices) {
        // write code here
        int sum=0;//总利润
        int len=prices.size();
        if(len<=1) return 0;
        int max_tmp=prices[0];//默认第一个是最大的
        int min_tmp=prices[0];//默认第一个是最小的
        for(int i=1;i<len;++i){
            if(prices[i]<prices[i-1]){
                //如果当天股价 比前一天低
                //就更新当前最大利润为:max减去min,并累加到sum
                //更新最低股价为:当天价格。并将最高股价也更新成一样的
                if(max_tmp>min_tmp){
                    sum+= max_tmp-min_tmp ;    
                }
                min_tmp=prices[i];//更新最低股价为:当天价格。
                max_tmp=prices[i];//更新最高股价为:当天价格。
            }else{
                max_tmp=prices[i];//如果当天股价 >前一天,最高价格更新为当前的
            }

        }
        return sum+max_tmp-min_tmp;//最后一天股价可能比前一天高
    }
};
全部评论
有一个更简单的思路:就是如果后一天的股价>前一天的,就累加上这两天的差额。上面这个写的有点复杂了
点赞 回复 分享
发布于 2021-06-02 13:39

相关推荐

不愿透露姓名的神秘牛友
03-18 14:29
牛客604067584号:感觉算法卷的人少很多,毕竟只有一部分bg还不错的硕士才会考虑算法,虽然hc不如后端,但是竞争真的少很多。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务