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

贵阳企业自助建站系统专门做宠物食品的网站

贵阳企业自助建站系统,专门做宠物食品的网站,wordpress 模板森林,获得网页源码怎么做网站Day52 动态规划part13 300.最长递增子序列 leetcode链接:300. 最长递增子序列 - 力扣(LeetCode) 题意:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除&a…

Day52 动态规划part13

300.最长递增子序列

leetcode链接:300. 最长递增子序列 - 力扣(LeetCode)

题意:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

示例 1:

  • 输入:nums = [10,9,2,5,3,7,101,18]
  • 输出:4
  • 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。

思路:

  • dp数组定义:dp[i]是以nums[i]为结尾的最长递增子序列长度
  • 状态转移方程:位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列 + 1 的最大值。所以:if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);
  • dp[i]的初始化:每一个i,对应的dp[i](即最长递增子序列)起始大小至少都是1
  • 遍历顺序:两层循环。dp[i] 是有0到i-1各个位置的最长递增子序列 推导而来,那么遍历i一定是从前向后遍历。
  • 推导
  • 扩展:也可以用贪心做!
class Solution:def lengthOfLIS(self, nums: List[int]) -> int:dp = [1] * len(nums)for i in range(1, len(nums)):for j in range(0, i):if nums[j] < nums[i]: dp[i] = max(dp[i], dp[j]+1)print(dp)return max(dp)

674. 最长连续递增序列

leetcode链接:. - 力扣(LeetCode)

题意:相比于上一题,这题是连续的

思路:只用和i-1比较了,都不用有循环了

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

718. 最长重复子数组

leetcode链接:718. 最长重复子数组 - 力扣(LeetCode)

题意:给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。

示例:

输入:

  • A: [1,2,3,2,1]
  • B: [3,2,1,4,7]
  • 输出:3
  • 解释:长度最长的公共子数组是 [3, 2, 1] 。

思路:用二维数组可以记录两个字符串的所有比较情况

  • 确定dp数组(dp table)以及下标的含义:dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。特别注意: “以下标i - 1为结尾的A” 标明一定是 以A[i-1]为结尾的字符串 )
  • 递推公式:dp[i][j] = dp[i-1][j-1]+1
  • 初始化:根据dp[i][j]的定义,dp[i][0] 和dp[0][j]其实都是没有意义的!但dp[i][0] 和dp[0][j]要初始值,因为 为了方便递归公式dp[i][j] = dp[i - 1][j - 1] + 1;所以dp[i][0] 和dp[0][j]初始化为0。举个例子A[0]如果和B[0]相同的话,dp[1][1] = dp[0][0] + 1,只有dp[0][0]初始为0,正好符合递推公式逐步累加起来。
  • 遍历顺序:外层for循环遍历A,内层for循环遍历B。其实先遍历B也可以的
class Solution:def findLength(self, nums1: List[int], nums2: List[int]) -> int:lena = len(nums1)lenb = len(nums2)dp = [[0]*(lenb+1) for i in range(lena+1)] #注意b是行!a是列!result = 0for i in range(1, lena+1):for j in range(1, lenb+1):# print(i,j,nums1[i-1],nums2[j-1])if nums1[i-1] == nums2[j-1]:dp[i][j] = dp[i-1][j-1] + 1if dp[i][j]>result:result = dp[i][j]# result = max(result, max(dp[i]))# print(dp)return result

http://www.yayakq.cn/news/522143/

相关文章:

  • 网站首页快照不更新做网站推广产品
  • 宁波住房和城乡建设培训网站网站建设与推广培训学校
  • 网站建设定金合同范本合肥关键词快速排名
  • 网站建设代理商电话重庆网站设计软件
  • 新乡做网站的潍坊网站建设推广报价
  • 做网站互联网公司手机logo免费设计软件
  • 网站运营与推广门户网站建设议题汇报材料
  • 做网站必须学php吗网站建设规划书百度文库
  • 什么样的网站不备案网页设计实训报告三个步骤
  • 在一个网站下建设多个子网站旅游网站建设技术有哪些方面
  • 怎么在本机做网站今天重大新闻50字
  • 网站检测ps的logo设计制作
  • 有什么好网站做浏览器主页网站开发人员 怎么保存
  • 网站建设自学建站视频教程东莞网站建设时间
  • 山西建设行政主管部门官方网站个人住房公积金贷款
  • 电子商务企业网站建设前期规划方案域名停域app免费下载
  • asp.net制作的网站开发怎样用自己的电脑做网站
  • 景区智慧旅游网站建设自媒体营销推广
  • 良精企业网站管理系统搜索关键词推荐
  • 最大的做网站公司内蒙古众信国际旅行社电话
  • 綦江建站哪家正规网站开发 php python
  • 网站多少个关键词斗蟋蟀网站建设
  • 室内设计软件大全网站电商seo优化是什么意思
  • 徐州网站无障碍建设上海室内设计公司
  • 找人做网站做小程序动漫制作技术专业
  • 宜春网站建设推广服务器租用
  • 如何免费建网站赚钱重庆建站模板
  • vs 手机网站开发网站开发 建设叫什么
  • 西安企业网站建设哪家好wordpress 设计套程序
  • 温州免费个人网站制作公司首钢建设网站