Dynamic Programming 2

本文精选了多个经典的动态规划问题,包括最大子序列和、股票买卖最佳时机、爬楼梯等,通过这些实例深入浅出地介绍了动态规划的基本思想与解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

53. Maximum Subarray: 求最大和子序列:maxendinghere,maximum

152. Maximum Product Subarray:求最大积子序列:maxendinghere分为max和min,有正负

121. Best Time to Buy and Sell Stock:给出股票价格,只售卖一次,计算最大利润。求序列中两个数的最大差值,求当前价格和最低价格的差值。

122. Best Time to Buy and Sell Stock II:可以多次交易,只要盈利就可以卖出。

309. Best Time to Buy and Sell Stock with Cooldown:卖出股票后隔一天才可以买股票。状态变化较为复杂的画出状态转换图。

198. House Robber: 对于某个房间是否进行rob,考虑上个房间被rob此房间不被rob,上个房间不被rob此房间被rob的最大值。

213. House Robber II:将房屋连成一个圈,考虑连接元素是否被rob,分为两种情况。

337. House Robber III:分类讨论,当前root是否被rob,利用hashmap存放某root子树maxprofit

70. Climbing Stairs:每次爬1或者2阶楼梯,多少种爬楼方式。分类讨论。

486. Predict the Winner:区间,取两端的数,最后取得数和最大,看player1能否成功。分类讨论,取左边还是取右边。

279. Perfect Squares:将数字写为完全平方数的和,从小到大依次算。

357. Count Numbers with Unique Digits:找到规律,从小到大依次计算。

91. Decode Ways:英文字母从A到Z用数字编码。分类讨论,1位或者2位。简便方法是用substring再用parseint


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值