【算法题】动态规划系列

动态规划:运筹学中一种求最值的算法

套路:明确状态和选择;明确dp定义;梳理每次选择的逻辑

注:以下题号为leetcode题号,可以在leetcode上搜索找到原题

目录

矩阵路径

47. 礼物的最大价值&64. 最小路径和

62. 不同路径

字符串问题

647. 回文子串

72. 编辑距离

139. 单词拆分

474. 一和零

650. 只有两个键的键盘

序列问题

152 乘积最大子序列——动态规划

300. 最长递增子序列

376. 最长摆动子序列

1143. 最长公共子序列 

583. 两个字符串的删除操作-同最长公共子序列

53. 最大子序和 

413. 等差数列划分

分割整数

343. 整数拆分

279.按平方数来分割整数

49. 丑数 &264

338. 比特位计数

60. n个骰子的点数

背包问题

(1)求最大价值

(2)求装包方法

322 零钱兑换-完全背包问题

518. 零钱兑换 II -完全背包

494. 目标和--完全背包

416. 分割等和子集-完全背包

377. 组合总和 Ⅳ

打家劫舍系列

198. 打家劫舍

213. 打家劫舍 II

337. 打家劫舍 III

博弈游戏

877. 石子游戏

1140. 石子游戏 II

股票 

121. 买卖股票的最佳时机

122. 买卖股票的最佳时机 II

123. 买卖股票的最佳时机 III

188. 买卖股票的最佳时机 IV

714. 买卖股票的最佳时机含手续费

扔鸡蛋

887. 鸡蛋掉落

斐波那契数列

10.斐波那契数列 

8 青蛙跳台阶问题

91&面试题46. 把数字翻译成字符串

母牛生产

信件错排


矩阵路径

47. 礼物的最大价值&64. 最小路径和

在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?

动态规划
这次用的方法不需要额外的存储空间,直接在原数组上进行修改
时间复杂度O(m*n),空间复杂度O(1)
class Solution:
    def maxValue(self, grid):
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if i == 0 and j==0: continue
                if i== 0 and j >= 1: #只能来源于左侧的格子
                    grid[i][j] = grid[i][j-1]+grid[i][j]
                 elif j == 0 and i >=1:
                     grid[i][j] = grid[i-1][j] +grid[i][j]
                  else:
                      A = grid[i-1][j] + grid[i][j]
                      B = grid[i][j-1]+ grid[i][j]
                      grid [i][j] = max(A,B)
         return grid[len(grid)-1][len(grid[0])-1]
                

62. 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。

问总共有多少条不同的路径?

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        dp = [[0]*(n) for _ in range(m)]
        for i in range(m):
            for j in range(n):
                if i==0 or j==0:
                    dp[i][j] = 1
                else:
                    dp[i][j] = dp[i-1][j]+dp[i][j-1]
        return dp[m-1][n-1]

字符串问题

你可能感兴趣的:(算法题,算法)