zoukankan      html  css  js  c++  java
  • 188. 买卖股票的最佳时机 IV

    给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。

    设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。

    注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

    示例 1:

    输入:k = 2, prices = [2,4,1]
    输出:2
    解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。

    示例 2:

    输入:k = 2, prices = [3,2,6,5,0,3]
    输出:7
    解释:在第 2 天 (股票价格 = 2) 的时候买入,在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4 。
         随后,在第 5 天 (股票价格 = 0) 的时候买入,在第 6 天 (股票价格 = 3) 的时候卖出, 这笔交易所能获得利润 = 3-0 = 3 。

    提示:

    • 0 <= k <= 109
    • 0 <= prices.length <= 1000
    • 0 <= prices[i] <= 1000
    class Solution {
    public:
        int maxProfit(int k, vector<int>& prices) {
            int n=prices.size();
            if(k>n){
                int res=0;
                for(int i=0;i<n-1;i++){
                    if(prices[i+1]>prices[i])
                        res+=prices[i+1]-prices[i];
                }
                return res;
            }else{
                vector<int>dp(k+1);
                vector<int>mink(k+1,INT_MAX);
                for(int i=1;i<=n;i++){
                    for(int j=1;j<=k;j++){
                        mink[j]=min(mink[j],prices[i-1]-dp[j-1]);
                        dp[j]=max(dp[j],prices[i-1]-mink[j]);
                    }
                }
                return dp[k];
            }
        }
    };

  • 相关阅读:
    收听网络状态广播
    常用工具类
    BroadcastReceiver study
    NIO2
    ip route,ip rule, iptables和docker的端口映射
    Hystrix使用小结
    mysql CPU占用高
    mysql隔离级别与锁,接口并发响应速度的关系(2)
    TOMCAT调优内容
    jvm 锁Lock
  • 原文地址:https://www.cnblogs.com/xxxsans/p/14200781.html
Copyright © 2011-2022 走看看