当前位置: 首页 > news >正文

序列dp常见思路总结

文章目录

  • 习题
    • 选或不选
      • 494.目标和
    • 枚举哪一个
      • 300.最长递增子序列

  • 序列dp是常考的题型,那么我们我们可以根据什么将它们分类,然后对于不同的类型的题目使用对应的模版进行求解?
  • 首先,子序列不同于子数组,子数组是要求元素在原来的序列当中是连续的,而子序列的元素不要求在原来的序列当中是连续的
  • 总的来说,子序列dp问题主要是两种套路

选或不选

  • 当面对是 子序列+相邻元素无关,也就说当面对当前的元素nums[i]的时候,并没有相邻元素之间的限制的条件,也就是都可以选,所以可以采用的是 选或不选的策略
  • 常常使用0-1背包问题模版进行求解

枚举哪一个

  • 当面对子序列+相邻元素相关,也就是对于原来的元素,我们在选择的时候,存在限制条件,那么我们就需要考虑枚举哪一个
  • 当然,代表问题当然是最长递增子序列,在定义的时候,我们常常需要定义dp[i]为以nums[i]结尾的情况的最值或者方案数

习题

选或不选

494.目标和

494.目标和

在这里插入图片描述
在这里插入图片描述

  • 思路分析:由于选择的元素,在原来的序列当中,并没有限制条件,所以我们就直接使用选或不选,在这题当中,我们通过转化,可以求解正的数或者负的数的和为目标值的问题,考虑使用0-1背包的模版进行求解
class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int:# 子序列问题,相邻元素之间并没有过多的要求# 根据式子,我们只需找出正数的和为 (sum(nums) + target)//2n = len(nums)p = sum(nums) + target # 这里我们求解正的数和为tarif p < 0 or p % 2 == 1:return 0 tar = p // 2 # 这个就可以转化为0-1背包问题# dp[i][j]表示前i个物体中,选中为j的方案数dp = [[0]*(tar+1) for _ in range(n+1)]dp[0][0] = 1 for i in range(n):for j in range(tar+1):if j < nums[i]:dp[i+1][j] = dp[i][j]else:dp[i+1][j] = dp[i][j] + dp[i][j-nums[i]]return dp[n][tar]

枚举哪一个

300.最长递增子序列

300.最长递增子序列

在这里插入图片描述

在这里插入图片描述

  • 思路分析:最长递增子序列模版题目,首先为了更好理解这个枚举哪一个,我们使用o(n^2)的时间复杂度的进行求解,当然后面也可以使用线段树进行优化为o(nlogn)的复杂度
class Solution:def lengthOfLIS(self, nums: List[int]) -> int:# 首先最简单的情况,当然是考虑o(n^2)的时间复杂度的算法n = len(nums)# 定义dp[i]为以nums[i]结尾的最大递增子序列的长度dp = [1]*n # dp[i] = max(dp[j]) + 1,并且 nums[i] > nums[j] , j < i for i in range(1,n):for j in range(i):if nums[i] > nums[j] and dp[i] < dp[j] + 1:dp[i] = dp[j] + 1return max(dp)

相关文章:

  • idea中Lombok失效的解决方案
  • 城市内涝监测预警系统守护城市安全
  • 【Linux 学习计划】-- 权限
  • 解决“VMware另一个程序已锁定文件的一部分,进程无法访问“
  • 革新直流计量!安科瑞DJSF1352-D电表:360A免分流直连,精度与空间双突破
  • foreach中使用await的问题
  • MATLAB中的概率分布生成:从理论到实践
  • 代理(主要是动态)和SpringAOP
  • 泰迪杯特等奖案例深度解析:基于多模态融合与小样本学习的工业产品表面缺陷智能检测系统
  • Latex单栏环境下如何设置表格和图片不独占一栏
  • 12 分钟讲解所有 JavaScript 库/模块[译]
  • 曝光融合(Exposure Fusion)
  • java后端学习
  • 【记录】Windows|竖屏怎么调整分辨率使横竖双屏互动鼠标丝滑
  • 51单片机的lcd12864驱动程序
  • uniapp-商城-57-后台 新增商品(弹窗属性数据添加父级)
  • 虚拟机在挂起恢复后时间漂移问题
  • 吉客云数据集成到金蝶云星空的最佳实践
  • HTML常用标签用法全解析:构建语义化网页的核心指南
  • 工具:shell命令提示符自定义之显示GIT当前分支
  • 租车订单时隔7年从花呗免密扣费?“GoFun出行”引质疑
  • 中办、国办关于持续推进城市更新行动的意见
  • 菲律宾中期选举初步结果出炉,杜特尔特家族多人赢得地方选举
  • 广东省中医院脾胃病科大科主任张北平病逝,年仅52岁
  • 刘国中:持续加强护士队伍建设,更好保障人民身体健康
  • 扶桑谈|从石破茂“越菲行”看日本周边外交布局战略新动向