欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 12:33:59
...
/*
@v7fgg
执行用时:35 ms, 在所有 Java 提交中击败了5.48%的用户
内存消耗:49 MB, 在所有 Java 提交中击败了100.00%的用户
2020年7月10日 19:56
*/
class Solution {
    public int maxProfit(int[] prices, int fee) {
        if(prices.length==0){return 0;}
        int ans[][]=new int[prices.length][2];
        ans[0][0]=0;
        ans[0][1]=-prices[0];
        for(int i=1;i<prices.length;i++){
            ans[i][0]=Math.max(ans[i-1][0],ans[i-1][1]+prices[i]-fee);
            ans[i][1]=Math.max(ans[i-1][1],ans[i-1][0]-prices[i]);
        }
        return Math.max(ans[prices.length-1][0],ans[prices.length-1][1]);
    }
}
/*
@v7fgg
执行用时:6 ms, 在所有 Java 提交中击败了55.13%的用户
内存消耗:49.1 MB, 在所有 Java 提交中击败了100.00%的用户
2020年7月10日 20:03
*/
class Solution {
    public int maxProfit(int[] prices, int fee) {
        if(prices.length==0){return 0;}
        int n0=0;
        int n1=-prices[0];
        for(int i=1;i<prices.length;i++){
            int m0=n0;
            n0=Math.max(n0,n1+prices[i]-fee);
            n1=Math.max(n1,n0-prices[i]);
        }
        return Math.max(n0,n1);
    }
}