zoukankan      html  css  js  c++  java
  • LeetCode123 Best Time to 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. (Hard)

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

    分析:

    最多购买两次股票且不能同时拥有,所以买卖两次肯定分布在前后两个不同的区间。

    设dp(i) = 区间[0,1,2...i]的最大利润 + 区间[i,i+1,....n-1]的最大利润,那么本题的最大利润 = max{dp[0],dp[1],dp[2],...,dp[n-1]}.

    而对于式子中两个区间内分别只能有一次买卖,这是Best Time to Buy and Sell Stock I的问题。

    代码:

    复制代码
     1 class Solution {
     2 public:
     3     int maxProfit(vector<int> &prices) {
     4         int len = prices.size();
     5         if(len <= 1) {
     6             return 0;
     7         }
     8         int maxFromHead[len];
     9         maxFromHead[0] = 0;
    10         int minprice = prices[0], maxprofit = 0;
    11         for(int i = 1; i < len; i++) {
    12             minprice = min(prices[i-1], minprice);
    13             if(maxprofit < prices[i] - minprice)
    14                 maxprofit = prices[i] - minprice;
    15             maxFromHead[i] = maxprofit;
    16         }
    17         int maxprice = prices[len - 1];
    18         int res = maxFromHead[len-1];
    19         maxprofit = 0;
    20         for(int i = len-2; i >=0; i--) {
    21             maxprice = max(maxprice, prices[i+1]);
    22             if(maxprofit < maxprice - prices[i])
    23                 maxprofit = maxprice - prices[i];
    24             if(res < maxFromHead[i] + maxprofit)
    25                 res = maxFromHead[i] + maxprofit;
    26         }
    27         return res;
    28     }
    29 };
    复制代码
  • 相关阅读:
    动态改变Spring定时任务执行频率
    tomcat
    liunx命令
    idea 使用笔记
    redis 笔记
    学习笔记 Optional
    JPA Example 基本使用使用实例
    面试经验总结
    基于LAMP实现后台活动发布和前端扫码签到系统
    XV6源代码阅读-文件系统
  • 原文地址:https://www.cnblogs.com/zhaohongtian/p/6809033.html
Copyright © 2011-2022 走看看