zoukankan      html  css  js  c++  java
  • leetcode 714. Best Time to Buy and Sell Stock with Transaction Fee

    Your are given an array of integers prices, for which the i-th element is the price of a given stock on day i; and a non-negative integer fee representing a transaction fee.

    You may complete as many transactions as you like, but you need to pay the transaction fee for each transaction. You may not buy more than 1 share of a stock at a time (ie. you must sell the stock share before you buy again.)

    Return the maximum profit you can make.

    Example 1:
    Input: prices = [1, 3, 2, 8, 4, 9], fee = 2
    Output: 8
    Explanation: The maximum profit can be achieved by:
    Buying at prices[0] = 1
    Selling at prices[3] = 8
    Buying at prices[4] = 4
    Selling at prices[5] = 9
    The total profit is ((8 - 1) - 2) + ((9 - 4) - 2) = 8.
    Note:
    
    0 < prices.length <= 50000.
    0 < prices[i] < 50000.
    0 <= fee < 50000.
    

    动态规划:dp[i][1]表示第天持有能得到的最大值,dp[i][0]代表第i天不持有能得到的最大值。
    那么

    dp[i][0] = max(dp[i-1][0], (prices[i] + dp[i-1][1] - fee));
    dp[i][1] = max(dp[i-1][0] - prices[i], dp[i-1][1]);
    

    代码如下:

    class Solution {
    public:
        int maxProfit(vector<int>& prices, int fee) {
            int n = prices.size();
            vector<vector<int> > dp(n, vector<int>(2));
            for (int i = 0; i < n; ++i) {
                if (i == 0) {
                    dp[i][1] = -prices[i];
                    dp[i][0] = 0;
                } else {
                    dp[i][0] = max(dp[i-1][0], (prices[i] + dp[i-1][1] - fee));
                    dp[i][1] = max(dp[i-1][0] - prices[i], dp[i-1][1]);
                }
            }
            return dp[n-1][0];
        }
    };
    
  • 相关阅读:
    在controller间分享数据(第一种办法)
    AngularJS之Factory vs Service vs Provider
    directive和controller如何通信
    AngularJS 之Services讲解
    AngularJS心得体会
    int 和Integer
    2019天梯赛练习题(L2专项练习)
    2019天梯赛练习题(L1专项练习)
    Hash冲突的几种解决方法
    HashMap
  • 原文地址:https://www.cnblogs.com/pk28/p/8635796.html
Copyright © 2011-2022 走看看