设为首页 加入收藏

TOP

leetcode――Best Time to Buy and Sell Stock III 买卖股票最大收益(AC)
2015-07-24 05:51:07 来源: 作者: 【 】 浏览:4
Tags:leetcode Best Time Buy and Sell Stock III 买卖 股票 最大 收益

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 at most two transactions.

Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

需要注意的是,可以操作两次买卖,但是第二次买入必须在第一次卖出之后才能操作。所以思路就是先正序使用贪心计算每一天之前买入卖出可能达到的最大收益,拿数组记录下来。再逆序计算每一天对应的之后买入卖出可能达到的最大收益,拿数组记录下来。然后将两个数组中每一天对应的两种情况可以实现的收益之和,得到最大值即为可以实现的最大收益。code如下:

class Solution {
public:
    int maxProfit(vector
  
    &prices) {
        if(prices.empty())
            return 0;
        int n = prices.size();
        vector
   
     pre(n,0); vector
    
      post(n,0); int curMin = prices[0]; int curMax = prices[n-1]; int result=0; for(int i=1; i
     
      diff ? pre[i-1] : diff; } for(int i=n-2; i>=0; i--) { curMax = curMax>prices[i] ? curMax : prices[i]; int diff = curMax-prices[i]; post[i] = post[i+1]>diff ? post[i+1] : diff; } for(int i=1; i
      
       (pre[i]+post[i]) ? result : (pre[i]+post[i]); } return result; } };
      
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu2159 FATE 二维背包 下一篇ACM:树的变换,无根树转有根树

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: