Dynamic Programming

134 阅读2分钟

1. 动态规划基本思路

2. 基础题目

2.1 斐波那契数 509. Fibonacci Number 💚

2.2 爬楼梯 70. Climbing Stairs 💚

2.3 最小花费爬楼梯 746. Min Cost Climbing Stairs 💚

2.4 不同路径 62. Unique Paths 🧡

2.5 不同路径II 63. Unique Paths II 🧡

2.6 整数拆分 343. Integer Break 🧡

2.7 不同的二叉搜索树 96. Unique Binary Search Trees 🧡

3. 背包问题

3.1 01背包

3.1.1 01背包理论基础

3.1.2 分割等和子集 416. Partition Equal Subset Sum 🧡

3.1.3 最后一块石头的重量II 1049. Last Stone Weight II 🧡

3.1.4 目标和 494. Target Sum 🧡

3.1.5 一和零 474. Ones and Zeroes 🧡

3.2 完全背包

3.2.1 完全背包理论基础

3.2.2 零钱兑换II 518. Coin Change II 🧡

3.2.3 组合总和IV 377. Combination Sum IV 🧡

3.2.4 爬楼梯 70. Climbing Stairs 💚

3.2.5 零钱兑换 322. Coin Change 🧡

3.2.6 完全平方数 279. Perfect Squares 🧡

3.2.7 单词拆分 139. Word Break 🧡

3.3多重背包

4. 打家劫舍

4.1 打家劫舍 198. House Robber 🧡

4.2 打家劫舍II 213. House Robber II 🧡

4.3 打家劫舍III 337. House Robber III 🧡

5. 股票问题

5.1 买卖股票的最佳时机(只能买卖一次)121. Best Time to Buy and Sell Stock 💚

5.2 买卖股票的最佳时机II(可以多次买卖)122. Best Time to Buy and Sell Stock II 🧡

5.3 买卖股票的最佳时机III (最多买卖两次) 123. Best Time to Buy and Sell Stock III ❤️

5.4 买卖股票的最佳时机IV (最多买卖K次) 188. Best Time to Buy and Sell Stock IV ❤️

5.5 最佳买卖股票时机含冷冻期 309. Best Time to Buy and Sell Stock with Cooldown 🧡

5.6 买卖股票的最佳时机含手续费 714. Best Time to Buy and Sell Stock with Transaction Fee 🧡

6. 子序列问题

6.1 不连续子序列

6.1.1 最长上升子序列 300. Longest Increasing Subsequence 🧡

6.1.2 最长公共子序列 1143. Longest Common Subsequence 🧡

6.1.3 不相交的线 1035. Uncrossed Lines 🧡

6.2 连续子序列

6.2.1 最长连续递增序列 674. Longest Continuous Increasing Subsequence 💚

6.2.2 最长重复子数组 718. Maximum Length of Repeated Subarray 🧡

6.2.3 最大子序和 53. Maximum Subarray 🧡

6.3 编辑距离

6.3.1 判断子序列 392. Is Subsequence 💚

6.3.2 不同的子序列 115. Distinct Subsequences ❤️

6.3.3 两个字符串的删除操作 583. Delete Operation for Two Strings 🧡

6.3.4 编辑距离 72. Edit Distance ❤️

6.4 回文

6.4.1 回文子串 647. Palindromic Substrings 🧡

6.4.2 最长回文子序列 516. Longest Palindromic Subsequence 🧡