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

Day 47 动态规划 part13

Day 47 动态规划 part13

  • 解题理解
    • 300
    • 674
    • 718

3道题目
300. 最长递增子序列
674. 最长连续递增序列
718. 最长重复子数组

解题理解

300

dp[i]被设置为以nums[i]为结尾的最长递增子序列长度。

class Solution:def lengthOfLIS(self, nums: List[int]) -> int:if len(nums) == 1:return 1n = len(nums)dp = [1] * nres = 0for i in range(1, n):for j in range(i):if nums[i] > nums[j]:dp[i] = max(dp[i], dp[j] + 1)if dp[i] > res:res = dp[i]return res 

674

思路跟上题一致,甚至还更简单,因为只需要看前一个位置和当前位置的关系就好。

class Solution:def findLengthOfLCIS(self, nums: List[int]) -> int:if len(nums) == 1:return 1n = len(nums)dp = [1] * nres = 0for i in range(1, n):if nums[i] > nums[i - 1]:dp[i] = max(dp[i], dp[i - 1] + 1)if res < dp[i]:res = dp[i]return res

718

这道题相当于两道第一题重叠考虑,设置dp[i][j]为以i-1为结尾的A,和以j-1为结尾的B的最长重复子数组的长度。

class Solution:def findLength(self, nums1: List[int], nums2: List[int]) -> int:m = len(nums1)n = len(nums2)dp = [[0] * (n + 1) for _ in range(m + 1)]res = 0for i in range(1, m + 1):for j in range(1, n + 1):if nums1[i - 1] == nums2[j - 1]:dp[i][j] = dp[i - 1][j - 1] + 1if res < dp[i][j]:res = dp[i][j]return res
http://www.lryc.cn/news/212230.html

相关文章:

  • 【广州华锐互动】飞机诊断AR远程指导系统为工程师提供更多支持
  • 【贝叶斯回归】【第 2 部分】--推理算法
  • 【深入浅出汇编语言】寄存器精讲第二期
  • 如何保证分布式情况下的幂等性
  • Mybatis特殊SQL的执行
  • MyBatis-Flex(一):快速开始
  • Vue组件化
  • nodejs+python+php+微信小程序-基于安卓android的健身服务应用APP-计算机毕业设计
  • SpringCloud 微服务全栈体系(九)
  • Mybatis 多对一和一对多查询
  • MySQL的数据库操作、数据类型、表操作
  • 音视频技术开发周刊 | 317
  • 【JavaSE专栏58】“Java构造函数:作用、类型、调用顺序和最佳实践“ ⚙️⏱️
  • Ubuntu系统HUSTOJ 用 vim 修改php.ini 重启PHP服务
  • 案例分析真题-信息安全
  • envi5.3处理高分二号影像数据辐射定标大气校正
  • C语言 结构体
  • frp-内网穿透部署-ubuntu22服务器-windows server-详细教程
  • MySQL内存使用的监控开关和使用查看
  • 数据库管理-第113期 Oracle Exadata 04-硬件选择(20231020)
  • 带着问题去分析:Spring Bean 生命周期 | 京东物流技术团队
  • C语言修行之函数篇(一)tolower —— 转换为小写字母
  • 【JavaSE专栏55】Java集合类HashTable解析
  • Apollo上机实践:一次对自动驾驶技术的亲身体验
  • QTcpServer简单的TCP服务器连接
  • LeetCode热题100——双指针
  • Ubuntu ARMv8编译Qt源码以及QtCreator
  • 虚机Centos忘记密码如何重置
  • OpenGL_Learn02
  • 基于STC系列单片机实现外部中断0控制按键调节定时器0产生PWM(脉宽调制)的功能