提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
一、力扣121. 买卖股票的最佳时机
class Solution {
public int maxProfit(int[] prices) {
if(prices == null || prices.length == 0){
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] = Math.max(dp[i-1][1], dp[i-1][0] + prices[i]);
}
return Math.max(dp[prices.length-1][0], dp[prices.length-1][1]);
}
}
二、力扣122.买卖股票的最佳时机II
class Solution {
public int maxProfit(int[] prices) {
if(prices == null || prices.length == 0){
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], dp[i-1][1]-prices[i]);
dp[i][1] = Math.max(dp[i-1][1], dp[i-1][0]+prices[i]);
}
return Math.max(dp[dp.length-1][0], dp[dp.length-1][1]);
}
}
文章介绍了使用动态规划解决LeetCode上的两道股票交易问题:121.买卖股票的最佳时机和122.买卖股票的最佳时机II。在每个状态下,动态规划数组dp存储了两种决策(持有股票或不持有)下的最大利润,通过迭代更新这些状态来找到最优策略。
1069

被折叠的 条评论
为什么被折叠?



