编程题之动态规划,持续更新……

对做过的动态规划题目进行汇总。

动态规划题目汇总
题目难度题目链接题目
中等LC3.无重复字符的最长子串

s = 'abcabcbb'

3

一维

i 对字符串的遍历

dp[i]代表以i字符结尾时候 最长的无重复字符串(一直维护最长数即可)

若 s[i] 在 dp[i-1] 中 截取a位置之后在加上a 则为dp[i]

若s[i]不在dp[i-1]中 则直接在dp[i-1]后直接加即可。

中等LC 718. 最长重复子数组

str1: bbbabcddef     str2: abcxef

求最长重复子数组长度

二维:

i 遍历字符串1

j 遍历字符串2

当 str1[i]=str2[j]

i或j等于0 :f[i][j] = 1

其他:f[i][j] = 1 + f[i-1][j-1]

简单题LC338. 比特位计数对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。

一维:

i 数字i

d[i]代表数字i的二进制数中的1的个数

d[i] = d[i-1] +1    i为奇数
      = d[i/2]       i为偶数

简单题LC70. 爬楼梯爬n阶楼梯, 每次可以爬 1 或 2 个台阶。有多少种不同的方法可以爬到楼顶

一维:

i 可选择爬的阶数

f(i) = f(i-1) + f(i-2)
简单Offer 10-I 斐波那契数列求第n个斐波那契数

一维:

i 有n个斐波那契数可求

dp[i] = dp[i-1] + dp [i-2]
中等Offer 49. 丑数求第 n 个丑数(只包含质因子 2、3 和 5 的数)

一维:

i 代表求的第i个丑数

dp[i] = min(dp[a]*2, dp[b]*3, dp[c]*5)
简单背包问题n 件物品,所占空间为 w[i],价值为 c[i]。背包容量V,如何让背包物品总价值最大

二维:

i 有n个物品可被选择

j 背包容量为V

d[i][j]=max(d[i][j-1],c[j-1]+d[i-w[j-1]][j-1])
中等LC474. 一和零找出二进制字符串数组strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1

三维:

i 背1的包的容量n

j 被0的包的容量m

k 有 l 个物品可被选择

 d[i][j][k] 代表 S1的数量为i、S2的数量为j时,添加到第k个物品时 物品的总量

d[i][j][k] = max(d[i][j][k - 1], 1 + d[i - zeros[k-1]][j - ones[k-1]][k-1])

中难题LC879. 盈利计划n 名员工,m种工作。每种工作分别产生profit[i] 的利润,要求group[i] 名成员共同参与

三维:

i 有m个工作可被选择

j 有n个员工可被选择

k 背包容量(至少产生的利润minProfit)

d[i][j][k]当做第i个工作 员工在前j个员工中选择  产生利润为【至少为k】 的方案数

 d[i][j][k]= max(d[i-1][j][k], d[i-1][j][k] + d[i-1][j-group[i-1]][max(0,k-profit[i-1])])

中等题LC1409.最后一块石头的重量 II  stones[i] 表示第 i 块石头的重量。每一次,从中选出任意两块石头,然后将它们一起粉碎。返回剩下最后一块石头的最小重量

(pos-neg小,即sum-2neg小neg=sum/2时 可取到)

二维:

i 可选择的n个石头

j 背包容量(neg)

d[i][j]= max(d[i-1][j], stones[i-1]+d[i-1][j-stones[i-1]])
中等题LC494. 目标和非负数数组 nums 和一个整数 target。向数组中的每个整数前添加 '+' 或 '-'的运算结果等于 target 的不同 表达式 的数目。

(分成pos neg 得到的neg视为背包的容量)

二维:

i nums中有n个元素可被选择

j 背包容量(neg)

d[i][j] = max(d[i-1][j], d[i-1][j] + d[i-1][j-nums[i-1]])
中难题华为机试.数组分割问题N个元素的正整数数组。分割为元素个数为N的两个和最接近的数组

三维:

i 有N个元素可供选择

j 只能选择N/2个元素

k 背包容量(SUM/2)

d[i][j][k] 表示 从 i 个元素中 选择 j 个元素,其和 小于 SUM/2 的和

 d[i][j][k] = max(d[i-1][j][k],nums[i] +                    d[i-1][j-1][k-nums[i]])

路虽远,行则将至。事虽难,做则必成 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值