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

    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.

    c++版本代码:

    class Solution {
    public:
        int maxProfit(vector<int> &prices) {
            int profit = 0, n = prices.size();
            if( n==0 ) {
                return 0;
            }
            int l[n], r[n];
            memset(l, 0, sizeof(int)*n);
            memset(r, 0, sizeof(int)*n);
            int min = prices[0];
            for(int i=1; i<n; i++) {
                l[i] = prices[i] - min > l[i-1] ? prices[i] - min : l[i-1];
                min = prices[i] < min ? prices[i] : min;
            }
            int max = prices[n-1];
            for(int i=n-2; i>=0; i--) {
                r[i] = max - prices[i] > r[i+1] ? max - prices[i] : r[i+1];
                max = prices[i] > max ? prices[i] : max;
            }
            for (int i=0; i<n ;i++) {
                profit = l[i] + r[i] > profit ? l[i] + r[i] : profit;
            }
            return profit;
        }
    }; 
    

      Java版本代码:

    public class Solution {
        public int maxProfit(int[] prices) {
         if(prices == null || prices.length == 0) {
             return 0;
         }
         int n = prices.length;
         int[] left = new int[n];
         int[] right = new int[n];
         int min = prices[0];
         for(int i=1; i<n; i++) {
             left[i] = left[i - 1] > prices[i] - min ? left[i - 1] : prices[i] - min;  
             min = min < prices[i] ? min : prices[i];
         }
         int max = prices[n-1];
         for(int i=n-2; i>0; i--) {
             right[i] = right[i + 1] > max - prices[i] ? right[i + 1] : max - prices[i]; 
             max = max > prices[i] ? max : prices[i];
         }
         int profit = 0;
         for(int i=0; i<n; i++) {
             profit = profit > left[i] + right[i] ? profit : left[i] + right[i];
         }
         return profit;
        }
    }
    

      

  • 相关阅读:
    HanLP《自然语言处理入门》笔记--5.感知机模型与序列标注
    Netty系列-netty的Future 和 Promise
    Netty系列-netty的初体验
    CentOS7 源码编译安装Nginx
    linux 源码编译安装MySQL
    Linux CentOS7
    Linux CentOS7 搭建ntp时间同步服务器
    CentOS7-7搭建ftp服务器
    CentOS7-7 搭建dhcp服务器
    python批量扫描脚本
  • 原文地址:https://www.cnblogs.com/zlz-ling/p/4052873.html
Copyright © 2011-2022 走看看