前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 122 Best Time to Buy and Sell Stock II

Leetcode 122 Best Time to Buy and Sell Stock II

作者头像
triplebee
发布2018-01-12 14:54:24
5840
发布2018-01-12 14:54:24
举报
文章被收录于专栏:计算机视觉与深度学习基础

Say you have an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

和121一样的题意,允许多次买卖,同时只能持有一支股。

最开始往DP上想的,没什么好想法,

突然想到其实只要把所有的连续上升子串的的两个端点找到就好了,

下降的不用管,因为你总是可以在下降前卖出,同时下降的最低点必然是上升的第一个点或最后一个点。

然后又想到,其实连续子串也可以拆分称相邻的上升点对,在上升子串上买卖一次和每个相邻点对都买卖是一样的效果,

于是就可以用贪心搞出来了,实现意义相当于每天都在买卖,只不过赔本的当天买进就卖出了,赚钱的留到第二天再卖。

代码语言:javascript
复制
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        if(prices.empty()) return 0;
        int res=0,pre=prices[0];
        for(int i=0;i<prices.size()-1;i++)
        {
            if(prices[i+1]>prices[i]) res+=prices[i+1]-prices[i];
            pre=prices[i+1];
        }
        return res;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-10-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档