代码随想录算法训练营第五十一天 | 买卖股票的最佳时机含冷冻期、买卖股票的最佳时机含手续费
● 今日学习的文章链接和视频链接
● 看到题目的第一想法
第一题很难
● 看完代码随想录之后的想法
第一题很难
● 实现过程中遇到哪些困难
第一题很难
● 解题代码
-
点击查看代码
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]; } } -
点击查看代码
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
浙公网安备 33010602011771号