动态规划

2021/12/28

# 介绍

  • 英语:Dynamic programming,简称 DP
  • 定义:把问题分解成相对简单的子问题求解的方式
  • 思想:问题拆分,分别求解,组合成为整体解
  • 核心:找出子问题及其子问题与原问题的关系,即状态转移方程

状态转移方程

  • 把f(n)拆分为f(1),f(2)....f(n-1)
  • 如何把f(1)...f(n-1)的解转化为f(n)的解,就是状态转移方程

# 70.爬楼梯

  • 需要爬n阶楼梯
  • 一次爬1阶或两阶
  • 求总共有多少种爬法
const n = 2;
console.log(climbStairs(n)); // 2
1
2

# 674. 最长连续递增序列

# 53.最大子数组和

  • 给一个整数数组(可能有负数)
  • 求最大子数组的和
const nums = [-2,1,-3,4,-1,2,1,-5,4]
console.log(maxSubArray(nums)); // 6
1
2

# 300.最长递增子序列

  • 给一个整数数组
  • 找到最长严格递增子序列
const nums = [10,9,2,5,3,7,101,18]
console.log(lengthOfLIS(nums)); // 4 【2,5,7,101】
1
2

# 509 斐波那契数

# 1137.第 N 个泰波那契数

# 64.最小路径和

# 17.电话

# 746.最小花费爬楼梯

# 198.打家劫舍

# 213.打家劫舍2

# 740. 删除并获得点数

# 55. 跳跃游戏

# 45. 跳跃游戏 II

# 152.最大乘积子数组

# 1567. 积为正数子数组长度

# 1014. 最佳观光组合

# 121. 买卖股票的最佳时机

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

# 118. 杨辉三角

# 931. 下降路径最小和

# 42. 接雨水

# 1143. 最长公共子序列

上次更新: 11/1/2024