LeetCode之Best Time to Buy and Sell Stock II

http://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/


一天能进行一次交易,需要注意的是一次交易包含 购买,售出 两种行为


这样在每次上升自序列开始时 购买股票, 上升子序列结束时售出股票,这样就能获取到所有子序列的收益。


例如对于上升子序列1,2,3,4 ,有两种方案


一: 1买入, 4 售出,收益=3

二: 1买入,2 卖出并买入, 3 卖出并买入, 4 卖出 ,收益=3


这两种方案的收益是相同的。由上面这个例子也提供了另外一种思路:


贪心发:,基本思想是锁定一个低价,然后在价格升到局部最高点(即下一天的价钱就下降了)时候,

售出股票,注意处理最后一次的利润


class Solution {
public:
    int maxProfit(vector
   
   
    
     &prices) {
        int max_profit = 0;
        for(int i = 1; i < prices.size(); i++) {
            if(prices[i] > prices[i-1]) max_profit += prices[i] - prices[i-1];
        }
        return max_profit;
    }
};

   
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值