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

image

贪心:

class Solution {
    public int maxProfit(int[] prices, int fee) {
        int n=prices.length;
        int low=prices[0];
        int ans=0;
        for(int i=1;i<n;i++){
            if(prices[i]<=low) low=prices[i];
            else if(prices[i]<=low+fee) continue;
            else{
                ans+=prices[i]-low-fee;
                low=prices[i]-fee;
            }
        }
        return ans;
    }
}

动态规划:

class Solution {
    public int maxProfit(int[] prices, int fee) {
        int len=prices.length;
        int[] dp=new int[2];
        dp[1]=-prices[0]-fee;
        for(int i=1;i<len;i++){
            int d0=Math.max(dp[0],dp[1]+prices[i]);
            int d1=Math.max(dp[1],dp[0]-prices[i]-fee);
            dp[0]=d0;
            dp[1]=d1;
        }
        return dp[0];
    }
}
posted @ 2022-02-22 13:42  livingsu  阅读(29)  评论(0)    收藏  举报