zoukankan      html  css  js  c++  java
  • Best Time to Buy and Sell Stock III <leetcode>

    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).

    思路:这个题本来行到的分成两部分,分别用动态规划,后来在由于做第一个题的时候,看到过一个比较简单的动态规划,因此在这里直接用了,(虽然代码写的不同,想法不同,但是我们用的都是动态规划),一下比较简洁的动态规划的代码:

     1 class Solution {
     2 public:
     3     int maxProfit(vector<int> &prices) {
     4     int minl=INT_MAX;
     5     int maxr=INT_MIN;
     6     
     7     int size=prices.size();
     8     if(size==0)  return 0;
     9     vector<int> f1(size);
    10     vector<int> f2(size);
    11     
    12     minl=prices[0];
    13     
    14     for(int i=1;i<size;i++)
    15     {
    16         minl=min(minl,prices[i]);
    17         f1[i]=max(f1[i-1],prices[i]-minl);
    18     }
    19     
    20     maxr=prices[size-1];
    21     
    22     for(int i=size-2;i>=0;i--)
    23     {
    24        maxr=max(maxr,prices[i]); 
    25        f2[i]=max(f2[i+1],maxr-prices[i]);
    26     }
    27     
    28     int sum = 0;
    29         for (int i = 0; i < size; i++)
    30             sum = std::max(sum, f1[i] + f2[i]);
    31 
    32         return sum;
    33     }
    34 };
  • 相关阅读:
    资源链接
    Silverlight4 RIA应用开发
    社会心理学(第8版)
    C# 2.0 锐利体验
    C# 3.0 锐利体验
    C#面向对象设计模式纵横谈
    ASP.NET MVC2程序开发入门到精通
    Silverlight数独游戏
    StringBuilder研究和探索
    .NET 开发从入门到精通
  • 原文地址:https://www.cnblogs.com/sqxw/p/3960339.html
Copyright © 2011-2022 走看看