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

徐州建设网站宁波厂家关键词优化

徐州建设网站,宁波厂家关键词优化,海安环评在哪个网站做,无锡专业网站营销leetcode300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2…

leetcode300. 最长递增子序列

给你一个整数数组 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 。

示例 2:
输入:nums = [0,1,0,3,2,3]
输出:4

示例 3:
输入:nums = [7,7,7,7,7,7,7]
输出:1

在这里插入图片描述

目录

  • leetcode300. 最长递增子序列
  • 子序列与子串的区别
    • 子序列(Subsequence)
    • 子串(Substring)
    • 总结
  • 最长递增子序列问题
    • 题目描述
    • 题目分析
    • 算法
    • 状态转移方程
      • 初始化
      • 遍历进行状态转移
      • 返回结果
    • 算法流程
    • 代码实现
    • 打表过程
    • 最终结果
    • 算法分析
    • 易错点
    • 相似题目

子序列与子串的区别

子序列(Subsequence)

  • 定义:一个给定序列的子序列是从原序列中在不改变序列顺序的情况下删除某些元素(也可以不删除任何元素)而形成的序列。
  • 特点
    • 不需要连续。
    • 保持元素的原有顺序。
  • 示例:对于序列 A = [5, 1, 22, 25, 6, -1, 8, 10][5, 22, 25][1, 6, -1] 都是它的子序列。

子串(Substring)

  • 定义:子串是指从原字符串中连续取出的一部分。
  • 特点
    • 必须连续。
    • 保持元素的原有顺序。
  • 示例:对于字符串 S = "abcdefg""abc""def" 都是它的子串。

总结

  • 主要区别:子序列不要求连续,而子串必须是连续的。

最长递增子序列问题

题目描述

给定一个整数数组,找到最长的递增子序列的长度。

题目分析

这是一个经典的动态规划问题。我们可以通过计算以每个元素为结尾的最长递增子序列的长度来最终得到整个数组的最大递增子序列长度。

算法

状态转移方程

  • 定义dp[i] 表示以 nums[i] 为结尾的最长递增子序列的长度。
  • 转移方程dp[i] = max(dp[i], dp[j] + 1),其中 0 <= j < inums[i] > nums[j]
  • 解释
    • 如果 nums[i] 大于 nums[j],那么 nums[i] 可以加到以 nums[j] 结尾的递增子序列的末尾,形成一个新的更长递增子序列。
    • 因此,我们需要更新以 nums[i] 结尾的最长递增子序列的长度。
    • max(dp[i], dp[j] + 1) 确保了对于每个 nums[i],我们选择一个最优的 dp[j] 来形成新的递增子序列。

初始化

  • dp[i] = 1,因为任何单个元素自身都是一个递增子序列。

遍历进行状态转移

  • 遍历数组,对于每个元素 nums[i],再遍历其之前的所有元素 nums[j],如果 nums[i] > nums[j],则更新 dp[i]

返回结果

  • 返回 dp 数组中的最大值,即为最长递增子序列的长度。

算法流程

开始
初始化dp数组
遍历i从1到n-1
遍历j从0到i-1
更新dp i
更新结果
结束

代码实现

class Solution {
public:int lengthOfLIS(vector<int>& nums) {int n = nums.size();if (n == 1) return 1;int result = 0;vector<int> dp(n, 1);for (int i = 1; i < n; i++) {for (int j = 0; j < i; j++) {if (nums[i] > nums[j]) {dp[i] = max(dp[j] + 1, dp[i]);}}result = max(result, dp[i]);}return result;}
};

打表过程

在这里插入图片描述

最终结果

  • 最长递增子序列长度为 4,对应于 dp[7]

算法分析

  • 时间复杂度:O(n^2),因为我们需要遍历数组中的每个元素,对于每个元素,我们又需要遍历其之前的所有元素。
  • 空间复杂度:O(n),用于存储 DP 数组。

易错点

  • 注意在遍历时正确应用状态转移方程。
  • 确保在更新 dp[i] 时考虑所有可能的 dp[j]

相似题目

题目链接
最长连续递增序列LeetCode 674
俄罗斯套娃信封问题LeetCode 354
最长公共子序列LeetCode 1143
http://www.yayakq.cn/news/67896/

相关文章:

  • 爱网站免费一站二站支付招聘网站怎么做费用
  • 网站制作无锡免费咨询大夫
  • 制作一个官网广州互邦物流网络优化建站
  • 网站制作推荐短租网站那家做的好处
  • 长沙人才招聘网站电脑培训学校学费多少
  • 企业网站建设有名 乐云seo莱芜搜狗推广提供
  • 企业网站搭建方案网站服务器怎么启动
  • 资讯网站优化排名工商网企业信息查询系统营业执照
  • 建设科技信息 网站建设微信网页版客户端
  • 送菜上门网站app如何做申请网站建设费用的请示
  • 深圳医疗网站建设报价页面跳转的两种方式
  • 免费域名网站的物流网站建设的背景
  • 中职学校网站建设的厂家建设彩票网站
  • 网站排名优化推广wordpress改模版
  • 一流的做pc端网站网站开发一般流程
  • 网页设计与网站建设程序作业怎么购买网站空间
  • 建立应用网站邯郸网站制作公司
  • 郑州网站建设哪家公司便宜徐州seo关键词排名
  • 建网站需要软件公司网站备案需要哪些
  • 怎样建设一个游戏网站wordpress腾讯云cos
  • 成都网站设计制作公司有了自己的网站怎样做后台
  • 深圳网站建设 设计首选cms影视系统
  • 柯桥网站建设手机qq钓鱼网站怎么做
  • 南京网站设计 联络南京乐识网站运营培训机构
  • 做网站有了空间在备案吗软件开发入门
  • 红酒集团网站建设建设银行注册网站
  • 网站二维码制作wordpress首页缩略图不显示
  • 做电子相册的网站模板建设网站
  • 网站后台密码怎么修改架设一个网站需要多少钱
  • 安徽城乡建设部网站首页企业信用信息公示系统湖北