本文主要是介绍【算法刷题day49】Leetcode:123.买卖股票的最佳时机III、188. 买卖股票的最佳时机 IV,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- Leetcode 123.买卖股票的最佳时机III
- 解题思路
- 代码
- 总结
- Leetcode 188. 买卖股票的最佳时机 IV
- 解题思路
- 代码
- 总结
草稿图网站
java的Deque
Leetcode 123.买卖股票的最佳时机III
题目:123.买卖股票的最佳时机III
解析:代码随想录解析
解题思路
定义五维*股票数的数组,分别是啥也不干,买第一只,卖第一只,买第二只,卖第二只。
代码
class Solution {public int maxProfit(int[] prices) {int [][]dp = new int[5][prices.length];dp[1][0] = -prices[0];dp[3][0] = -prices[0];for (int i = 1; i < prices.length; i++) {dp[1][i] = Math.max(dp[1][i-1], dp[0][i-1] - prices[i]);dp[2][i] = Math.max(dp[2][i-1], dp[1][i-1] + prices[i]);dp[3][i] = Math.max(dp[3][i-1], dp[2][i-1] - prices[i]);dp[4][i] = Math.max(dp[4][i-1], dp[3][i-1] + prices[i]);}return dp[4][prices.length-1];}
}
总结
暂无
Leetcode 188. 买卖股票的最佳时机 IV
题目:188. 买卖股票的最佳时机 IV
解析:代码随想录解析
解题思路
上一个题基础上拓展一下
代码
class Solution {public int maxProfit(int k, int[] prices) {int [][]dp = new int[2*k+1][prices.length];for (int i = 1; i <= 2*k; i+=2) {dp[i][0] = -prices[0];}for (int i = 1; i < prices.length; i++) {for (int j = 1; j <= 2*k; j+=2) {dp[j][i] = Math.max(dp[j][i-1], dp[j-1][i-1] - prices[i]);dp[j+1][i] = Math.max(dp[j+1][i-1], dp[j][i-1] + prices[i]);}}return dp[2*k][prices.length-1];}
}
总结
暂无
这篇关于【算法刷题day49】Leetcode:123.买卖股票的最佳时机III、188. 买卖股票的最佳时机 IV的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!