• LeetCode OJ 123. 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).


    【题目分析】

    用一个数组表示股票每天的价格,数组的第i个数表示股票在第i天的价格。最多交易两次,手上最多只能持有一支股票,求最大收益。


    【思路】

    动态规划法。以第i天为分界线,计算第i天之前进行一次交易的最大收益preProfit[i],和第i天之后进行一次交易的最大收益postProfit[i],最后遍历一遍,max{preProfit[i] + postProfit[i]} (0≤i≤n-1)就是最大收益。第i天之前和第i天之后进行一次的最大收益求法同Best Time to Buy and Sell Stock I。


    【java代码】

     1 public class Solution {
     2     public int maxProfit(int[] prices) {
     3         if(prices.length < 2) return 0;
     4         
     5         int n = prices.length;
     6         int preProfit[] = new int[n];
     7         int postProfit[] = new int[n];
     8         
     9         int curMin = prices[0];
    10         for(int i = 1; i < n; i++){
    11             curMin = Math.min(curMin, prices[i]);
    12             preProfit[i] = Math.max(preProfit[i-1], prices[i] - curMin);
    13         }
    14         
    15         int curMax = prices[n-1];
    16         for(int i = n-2; i >= 0; i--){
    17             curMax = Math.max(curMax, prices[i]);
    18             postProfit[i] = Math.max(postProfit[i+1], curMax - prices[i]);
    19         }
    20         
    21         int maxProfit = 0;
    22         for (int i = 0; i < n; i++) {
    23             maxProfit = Math.max(maxProfit, preProfit[i] + postProfit[i]);
    24         }
    25         
    26         return  maxProfit;
    27     }
    28 }
  • 相关阅读:
    VirtualBox的四种网络连接方式详解
    need to be root
    Unreachable catch block for IOException. This exception is never thrown from the try statement body
    git fetch 拉取而不合并
    IOS开发的哪些异常之异常断点
    duplicate报ORA-01017权限问题
    Woody的Python学习笔记4
    微软100题第51题:和为n连续正数序列
    C语言scanf函数详解
    火星人乘坐核动力飞船回故乡
  • 原文地址:https://www.cnblogs.com/liujinhong/p/5804967.html
Copyright © 2020-2023  润新知