首页 > 其他分享 >代码随想录Day42 | 188.买卖股票的最佳时机IV,309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费

代码随想录Day42 | 188.买卖股票的最佳时机IV,309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费

时间:2025-01-23 11:59:32浏览次数:3  
标签:买卖 int 股票 最佳时机 Math max prices return dp

代码随想录Day42 | 188.买卖股票的最佳时机IV,309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费

188.买卖股票的最佳时机IV

股票买卖通用代码模板

class Solution {
    public int maxProfit(int k, int[] prices) {
        int n = prices.length;
        // 定义:
        // dp[i][j][0]:第i天时,最大购买次数为k,且不持有股票的最大利润
        // dp[i][j][1]:第i天时,最大购买次数为k,且持有股票的最大利润
        int[][][] dp = new int[n][k + 1][2];

        for (int i = 0; i <= k; i++) {
            dp[0][i][1] = -prices[0];
        }
        for (int i = 1; i < n; i++) {
            for (int j = 1; j <= k; j++) {
                dp[i][j][0] = Math.max(dp[i - 1][j][0], dp[i - 1][j][1] + prices[i]);
                dp[i][j][1] = Math.max(dp[i - 1][j][1], dp[i - 1][j - 1][0] - prices[i]);
            }
        }
        return dp[n - 1][k][0];
    }
}

309.最佳买卖股票时机含冷冻期

因为有一天冷冻期,所以第 i 天买入的话,第 i-1 天不能卖出
dp[i - 1][0] 只能等于 dp[i - 2][0]

class Solution {
    public int maxProfit(int[] prices) {
        int n = prices.length;
        if (n == 1) return 0;
        int[][] dp = new int[n][2];
        dp[0][0] = 0;
        dp[0][1] = -prices[0];
        dp[1][0] = Math.max(dp[0][0], dp[0][1] + prices[1]);
        dp[1][1] = Math.max(dp[0][1], -prices[1]);

        for (int i = 2; i < n; i++) {
            dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
            // 因为有一天冷冻期,所以第 i 天买入的话,第 i-1 天不能卖出
            // dp[i - 1][0] 只能等于 dp[i - 2][0]
            dp[i][1] = Math.max(dp[i - 1][1], dp[i - 2][0] - prices[i]);
        }
        return dp[n - 1][0];
    }
}

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

状态转移加上手续费即可

class Solution {
    public int maxProfit(int[] prices, int fee) {
        int n = prices.length;
        if (n == 1) return 0;
        int[][] dp = new int[n][2];
        dp[0][1] = -prices[0] - fee;

        for (int i = 1; i < n; i++) {
            dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
            // 状态转移加上手续费即可
            dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i] - fee);
        }

        return dp[n - 1][0];
    }
}

class Solution {
    public int maxProfit(int[] prices, int fee) {
        int n = prices.length;
        if (n == 1) return 0;
        // 空间优化
        int dp1 = 0;
        int dp2 = -prices[0] - fee;

        for (int i = 1; i < n; i++) {
            int dp11 = Math.max(dp1, dp2 + prices[i]);
            // 状态转移加上手续费即可
            int dp22 = Math.max(dp2, dp1 - prices[i] - fee);
            dp1 = dp11;
            dp2 = dp22;
        }

        return dp1;
    }
}

标签:买卖,int,股票,最佳时机,Math,max,prices,return,dp
From: https://blog.csdn.net/weixin_43992121/article/details/145321106

相关文章

  • 代码随想录——动态规划、股票问题
    https://www.programmercarl.com/动态规划-股票问题总结篇.html#买卖股票的最佳时机含手续费只能买一次不断更新最小买入值,不断更新profit=prices[i]-buy可以买卖多次动态规划-定义dp数组dp[i][1],dp[i][0]分别表示第i天持有股票时的现金和第i天未持有股票时的现金-递推......
  • Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250115
    逐笔成交逐笔委托下载链接:https://pan.baidu.com/s/1uRCmUTFoUZShauQ0gJYFiw?pwd=f837提取码:f837--------------------Level2逐笔成交逐笔委托数据分享下载 采用Level2逐笔成交与逐笔委托的详细记录,这种毫秒级别的数据能揭露众多关键信息,如庄家意图、虚假交易,使所......
  • 股票接口免费是真的吗?有哪些靠谱的免费股票接口可供选择?
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......
  • 188. 买卖股票的最佳时机 IV
    买卖股票的最佳时机IV类比j为奇数是买,偶数是卖的状态。/***@param{number[]}prices*@return{number}*/​dp[0]:无操作;​dp[1]:第一次买入;​dp[2]:第一次卖出;​dp[3]:第二次买入;​dp[4]:第二次卖出; //2*k+1varmaxProfit......
  • 龙哥量化:通达信macd背离的形态怎么选股,怎么找到macd标准背离的股票
    如果您需要代写技术指标公式,请联系我。龙哥QQ:591438821龙哥微信:Long622889也可以把您的通达信,文华技术指标改成TB交易开拓者、金字塔、文华8的自动交易量化策略 macd的背离,底背离是下跌行情中抄底的信号,很多朋友的思路都是抄底对了,就吃一波段的利润,抄底错了,立马止损,盈亏......
  • 123. 买卖股票的最佳时机
    123.买卖股票的最佳时机III/***@param{number[]}prices*@return{number}*/varmaxProfit=function(prices){if(prices.length===1)return0;letinit=null/**dp[i][0]:无操作;dp[i][1]:第一次买入;dp[i][2]:第一......
  • 121. 买卖股票的最佳时机
    买卖股票的最佳时机/***@param{number[]}prices*@return{number}*/varmaxProfit=function(prices){letmax=0;for(leti=0;i<prices.length;i++){for(letj=i+1;j<prices.length;j++){letprofit=prices[j]-prices[......
  • LeetCode:122.买卖股票的最佳时机II
    LeetCode:122.买卖股票的最佳时机IImathtcg4d..解题思路前提:上帝视角,知道未来的价格。局部最优:见好就收,见差就不动,不做任何长远打算。解题步骤新建一个变量,用来统计总利润。遍历价格数组,如果当前价格比昨天高,就在昨天买,今天卖,否则就不交易。遍历结束后,返回所有利润之和。/**......
  • AkShare-股票数据-资金流向
    社区首页>专栏>AkShare-股票数据-资金流向AkShare-股票数据-资金流向发布于 2020-05-2000:49:032.1K04代码可运行举报文章被收录于专栏:数据科学实战作者寄语继续扩充昨天更新的资金流数据数据:个股资金流、个股资金流排名、大盘资金流、板块......
  • 股票API接口使用python、JAVA等多种语言实例代码演示免费获取实时数据、历史数据、CDM
    ​最新整理的股票API接口,下方所有接口链接均可直接点击验证,查看返回的数据。沪深两市股票列表股票API接口链接(可点击验证):https://api.mairui.club/hslt/list/LICENCE-66D8-9F96-0C7F0FBCD073【实时数据接口】沪深两市实时交易数据接口股票API接口链接(可点击验证):https:......