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];
        }
    };
    
  • 相关阅读:
    Oracle序列使用:建立、删除
    struts1.x入门
    SQL的四种连接-左外连接、右外连接、内连接、全连接
    eclipse更改文件编码方式
    使用links方式安装Eclipse插件
    JAVA:Eclipse代码自动提示
    MyEclipse注释配置
    全面理解SQL
    一秒去除Win7快捷方式箭头
    Eclipse快捷键大全(转载)
  • 原文地址:https://www.cnblogs.com/pk28/p/8635796.html
Copyright © 2011-2022 走看看