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

买卖股票的最好时机 ii

http://www.nowcoder.com/practice/572903b1edbd4a33b2716f7649b4ffd4

原始思路:
找到最大值,然后在最大值(第1次)的左边部分找最小值;之后在右边部分找最大值,再在该最大值(第2次)的左边部分,最大值(第1次)的右边部分,找此范围的最小值,以此类推,每一次的差值加和,即为最终的最大利润。
这个思路的错误之处在于,只考虑最大和最小的差值,实际上,在允许任意数量的交易(例如,多次购买和出售股票的一股)的情况下,想要利润最大化,就应该买入之后,有增长就卖,换句话说,就是判断相邻是否递增,因为连续递增可以合起来看为一次买入卖出操作,也就是最开始我想法中的最大值减最小值的操作,所以统计所有递增量即可。
代码如下:

class Solution {
public:
    /**
     * 
     * @param prices int整型vector 
     * @return int整型
     */
    int maxProfit(vector<int>& prices) {
        // write code here
        int len = prices.size();
        int profit=0;//记录利润
        if(len < 2 )
        {
            return 0;//当天买当天卖
        }
        for(int i=0;i<len-1;i++)
        {
            if(prices[i]<prices[i+1])
            {
                profit+=(prices[i+1]-prices[i]);
            }
        }
        return profit;
    }
};
牛客刷题记录 文章被收录于专栏

记录自己的刷题记录,刷过的题的解法

全部评论

相关推荐

喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务