代码随想录训练营第四十九天 | 动态规划
今天是第四十九天,用动态规划的思想去解决之前用贪心算法解决的股票买卖问题
class Solution { public int maxProfit(int[] prices) { int n = prices.length; if(n == 1){ return 0; } int[] dp = new int[n]; dp[0] = 0; int min = prices[0]; for(int i = 1; i<n; i++){ if(prices[i] < min){ min = prices[i]; } dp[i] = Math.max(dp[i-1], prices[i] - min); } return dp[n-1]; } }
看当前利润和当前价格减去之前最小值,这两个值哪个利润最大,哪个就保留在dp[i]中为当前最大利润。
class Solution { public int maxProfit(int[] prices) { int n = prices.length; if(n ==1){ return 0; } int[] dp = new int[n]; dp[0] = 0; for(int i = 1; i<n; i++){ dp[i] = Math.max(dp[i-1], dp[i-1] + prices[i]-prices[i-1]); } return dp[n-1]; } }
和贪心一样的思路,如果昨天的价格比今天低,那就可以卖了,然后如果明天价格比今天还高,那么今天再买。
总体来说今天的题都很简单,都是用dp来实现贪心的思想,加油。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?