zoukankan      html  css  js  c++  java
  • 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.

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

    Ref:http://fisherlei.blogspot.com/2013/01/leetcode-best-time-to-buy-and-sell_3958.html

    http://www.cnblogs.com/jasonC/p/3417722.html

    [Thoughts]

    前后两遍遍历,算出当前位置之前和之后的最大利润。

    One dimensional dynamic planning.
    Given an i, split the whole array into two parts:
    [0,i] and [i+1, n], it generates two max value based on i, Max(0,i) and Max(i+1,n)
    So, we can define the transformation function as:
    Maxprofix = max(Max(0,i) + Max(i+1, n))  0<=i<n
    Pre-processing Max(0,i) might be easy, but I didn't figure an efficient way to generate Max(i+1,n) in one pass.

     1 public class Solution {
     2     public int maxProfit(int[] prices) {
     3         if(prices == null || prices.length == 0){
     4             return 0;
     5         }
     6         
     7         int[] firstProfit = new int[prices.length];
     8         int min = prices[0];
     9         for(int i =1; i < prices.length; i++){
    10             min = Math.min(min, prices[i]);
    11             firstProfit[i] = Math.max(firstProfit[i-1], prices[i] - min);
    12         }
    13         
    14         int result = 0;
    15         int rightPeek = prices[prices.length-1];
    16         for(int i = prices.length-1; i >=0; i--){
    17             rightPeek = Math.max(rightPeek, prices[i]);
    18             result = Math.max(result, firstProfit[i] + rightPeek - prices[i]);
    19         }
    20         return result;
    21     }
    22 }
  • 相关阅读:
    linux学习第一周笔记
    三授权六禁令(必背)
    内存复用三种技术
    移动平台路径相关
    unitUnity优化技巧
    游戏开发优化建议
    转载, unity 如何自定义脚本
    unity animation 在播放动画时报错 The animation state Eat could not be played because it couldn't be found!
    unity 学习之前需要做的准备
    xml 操作遇到的坑
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3552842.html
Copyright © 2011-2022 走看看