【Leetcode】动态规划问题详解(持续更新)

本文详细介绍了动态规划算法的步骤,并通过LeetCode上的经典题目,如Triangle、Maximum Subarray、Palindrome Partitioning II以及Unique Paths系列问题,深入剖析了动态规划的解题思路和参考代码,帮助读者掌握动态规划在解决实际问题中的应用。

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

1、动态规划算法步骤(Dynamic Programming)

动态规划算法一般用来求解最优化问题,当问题有很多可行解,而题目要求寻找这些解当中的“最大值”/“最小值”时,通常可以采用DP。
动态规划算法与分治法相似,都是通过组合子问题的解来求解原问题。所不同的是,动态规划应用于子问题重叠的情况,在递归求解子问题的时候,一些子子问题可能是相同的,这种情况下,分治法会反复地计算同样的子问题,而动态规划对于相同的子问题只计算一次。

动态规划算法的设计步骤
1、刻画最优解的结构特征(寻找最优子结构)
2、递归地定义最优解的值(确定递归公式,动态规划法的重点就是这个)
3、计算最优解的值(有两种方法:带备忘录自顶向下法、自底向上法)
4、利用计算出的信息构造一个最优解(通常是将具体的最优解输出)

2、leetcode上适合用DP求解的问题

题目 OJ地址 目录  

Triangle

 
https://oj.leetcode.com/problems/triangle/
 3.1
Maximum Subarray
https://oj.leetcode.com/problems/maximum-subarray/
3.2

Palindrome Partitioning II

 
https://oj.leetcode.com/problems/palindrome-partitioning-ii/
3.3
Minimum Path Sum
https://oj.leetcode.com/problems/minimum-path-sum/
3.4
Maximal Rectangle
https://oj.leetcode.com/problems/maximal-rectangle/
3.5

Interleaving String

 
https://oj.leetcode.com/problems/interleaving-string/
3.6
Edit Distance
https://oj.leetcode.com/problems/edit-distance/
3.7

Decode Ways

 
https://oj.leetcode.com/problems/decode-ways/
3.8

Best Time to Buy and Sell Stoc

   I&II&III
https://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock/
3.9

Scramble String

 
https://oj.leetcode.com/problems/scramble-string/
3.10

Distinct Subsequences

 
https://oj.leetcode.com/problems/distinct-subsequences/
3.11
Word Break I&II
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值