跳至主要內容

714. 买卖股票的最佳时机含手续费

T4mako算法贪心数组动态规划小于 1 分钟

714. 买卖股票的最佳时机含手续费

中等

题目描述open in new window

解法思路:
使用动态规划,建立一个 n 行 2 列的二维数组 dp[n][2]
dp[i][0] 表示第 i 天不持有可获得的最大利润
dp[i][1] 表示第 i 天持有可获得的最大利润(注意是第 i 天持有,而不是第 i 天买入)

dp[i][0]=max(dp[i1][0],dp[i1][1]+prices[i]fee)(不持有)dp[i][1]=max(dp[i1][1],dp[i1][0]prices[i])(持有) dp[i][0] = max(dp[i−1][0],dp[i−1][1] + prices[i] − fee)(不持有) \\ dp[i][1] = max(dp[i−1][1],dp[i−1][0]−prices[i]) (持有)

class Solution {
    public int maxProfit(int[] prices, int fee) {
        int n = prices.length;
        int[] dp = new int[2];
        dp[0] = 0;
        dp[1] = -prices[0];
        for (int i = 1; i < n; i++) {
            int tmp = dp[0];
            dp[0] = Math.max(dp[0], dp[1] + prices[i] - fee); 
            dp[1] = Math.max(dp[1], tmp - prices[i]);
        }
        return dp[0];
    }
}
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5