zoukankan      html  css  js  c++  java
  • 123. Best Time to Buy and Sell Stock III

        /*
         * 123. Best Time to Buy and Sell Stock III
         * 2016-5-21 by Mingyang
         * 根据题目要求,最多进行两次买卖股票,而且手中不能有2只股票,就是不能连续两次买入操作。
         * 所以,两次交易必须是分布在2各区间内,也就是动作为:买入卖出,买入卖出。
         * 进而,我们可以划分为2个区间[0,i]和[i,len-1],i可以取0~len-1。
         * 那么两次买卖的最大利润为:在两个区间的最大利益和的最大利润。
         * 一次划分的最大利益为:Profit[i] = MaxProfit(区间[0,i]) + MaxProfit(区间[i,len-1]);
         * 最终的最大利润为:MaxProfit(Profit[0], Profit[1], Profit[2], ... , Profit[len-1])。
         * 这道题目的思路一开始我想用Greedy,来找到最大的两个,但发现这个用greedy的话需要更新range
         * 后面想到了dp,left[i]表示从0到i这个range以后买卖一次的最高获利,其实就是跟I题差不多的问题
         * 最后再加起来结果
         */
          public int maxProfit1(int[] prices) {
              if(prices==null||prices.length==0)
                return 0;
              int[] left=new int[prices.length];
              int[] right=new int[prices.length];
              int localMax=0;
              int min=Integer.MAX_VALUE;
              for(int i=0;i<prices.length;i++){
                  if(prices[i]<min){
                      min=prices[i];
                  }else{
                      localMax=Math.max(localMax,prices[i]-min);
                  }
                  left[i]=localMax;
              }
              localMax=0;
              int max=Integer.MIN_VALUE;
              for(int i=prices.length-1;i>=0;i--){
                  if(prices[i]>max){
                      max=prices[i];
                  }else{
                      localMax=Math.max(localMax,max-prices[i]);
                  }
                  right[i]=localMax;
              }
              int maxProfit=0;
              for(int i=0;i<prices.length;i++){
                  maxProfit=Math.max(maxProfit,left[i]+right[i]);
              }
              return maxProfit;
            }
  • 相关阅读:
    正则表达式常用公式
    造轮子之--Redis
    SqlServer 查询计划分析
    实现poster,json,base64等编码转码工具
    win nginx + php bat启动/停止脚本
    php设计模式——单例模式
    [php]php设计模式 (总结)
    升级openssl 操作记录
    PHP URL安全的Base64位编码
    php curl使用 常用操作
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5516002.html
Copyright © 2011-2022 走看看