代码随想录算法训练营第五十一天 | 买卖股票的最佳时机含冷冻期、买卖股票的最佳时机含手续费

● 今日学习的文章链接和视频链接

题目309. 买卖股票的最佳时机含冷冻期
题目714. 买卖股票的最佳时机含手续费

● 看到题目的第一想法

第一题很难

● 看完代码随想录之后的想法

第一题很难

● 实现过程中遇到哪些困难

第一题很难

● 解题代码

  1. 点击查看代码
    class Solution {
        public int maxProfit(int[] prices) {
    		if(prices.length == 1) return 0;
    		int[][] dp = new int[prices.length][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 < prices.length; i++) {
    			dp[i][0] = Math.max(dp[i - 1][0],prices[i] + dp[i - 1][1]);
    			dp[i][1] = Math.max(dp[i - 1][1],dp[i - 2][0] - prices[i]);
    		}
    		return dp[prices.length-1][0];
        }
    }
    
  2. 点击查看代码
    class Solution {
        public int maxProfit(int[] prices, int fee) {
    		if(prices.length == 1) return 0;
    		int[][] dp = new int[prices.length][2];
    		dp[0][0] = -prices[0];
    		dp[0][1] = 0;
    		for (int i = 1; i < prices.length; i++) {
    			dp[i][0] = Math.max(dp[i-1][0],-prices[i] + dp[i-1][1]);
    			dp[i][1] = Math.max(dp[i-1][1],dp[i][0] + prices[i] - fee);
    		}
    		return dp[prices.length-1][1];
        }
    }
    

● 今日收获,学习时长

今日收获:冷冻期学到了
学习时长:1h
posted @ 2024-01-18 21:16  雨年今天有记录吗  阅读(1)  评论(0)    收藏  举报