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

leetcode 674. Longest Continuous Increasing Subsequence

目录

题目描述

第一步,明确并理解dp数组及下标的含义 

第二步,分析明确并理解递推公式

第三步,理解dp数组如何初始化

第四步,理解遍历顺序

代码


题目描述

这是动态规划解决子序列问题的例子。与第300题的唯一区别就是,本题要求子序列是连续的。

第一步,明确并理解dp数组及下标的含义 

        int n = nums.size();
        //nums[0,i]表示从第0个数一直到第i个数(包含第i个数)的子数组,dp[i]表示子数组nums[0,i]中的最长连续递增子序列的长度。
        vector<int> dp(n,1);//所有的dp[i]都初始化为1,含义是nums[i]这一个数自身一定是一个子序列

第二步,分析明确并理解递推公式

给定i,只需要考虑nums[i]和nums[i-1]的大小关系。

            if(nums[i]>nums[i-1])
                dp[i] = dp[i-1] +1;
            else
                dp[i] = 1;

第三步,理解dp数组如何初始化

vector<int> dp(n,1);//所有的dp[i]都初始化为1,含义是nums[i]这一个数自身一定是一个子序列

第四步,理解遍历顺序

dp[i]依赖于dp[i-1],所以对i的遍历应该从小到大。

代码

class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {int n = nums.size();//nums[0,i]表示从第0个数一直到第i个数(包含第i个数)的子数组,dp[i]表示子数组nums[0,i]中的最长连续递增子序列的长度。vector<int> dp(n,1);//所有的dp[i]都初始化为1,含义是nums[i]这一个数自身一定是一个子序列int res = dp[0];for(int i = 1;i < n;i++){if(nums[i]>nums[i-1])dp[i] = dp[i-1] +1;elsedp[i] = 1;if(dp[i] > res)res = dp[i];}return res;}
};

可以发现,求dp[i]时候,只需要知道dp[i-1]即可,i-1之前的不再需要。因此可以不用数组,改用两个变量。

class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {int n = nums.size();int dp_i_1 = 1;int dp_i = 1;int res = dp_i_1;for(int i = 1;i < n;i++){if(nums[i]>nums[i-1])dp_i = dp_i_1 +1;elsedp_i = 1;if(dp_i > res)res = dp_i;dp_i_1 = dp_i;}return res;}
};
http://www.xdnf.cn/news/391.html

相关文章:

  • 包含物体obj与相机camera的 代数几何代码解释
  • Flutter 弹窗队列管理:实现一个线程安全的通用弹窗队列系统
  • 学习笔记十七——Rust 支持面向对象编程吗?
  • Yue生成中文歌词
  • Mybatis
  • 数据结构0基础学习堆
  • AcWing 11:背包问题求方案数 ← 0-1背包
  • 与终端同居日记:Linux指令の进阶撩拨手册
  • docker底层原理
  • 如何给云开发生成的智能体增加权限判断
  • AtCoder ABC402 A~D 题解
  • 数据驱动未来:大数据在智能网联汽车中的深度应用
  • Visio导出清晰图片步骤
  • npm 常用操作和配置
  • uv:重新定义Python开发效率的下一代工具链
  • 高可靠 ZIP 压缩方案兼容 Office、PDF、TXT 和图片的二阶段回退机制
  • 【今日三题】打怪(模拟) / 字符串分类(字符串哈希) / 城市群数量(dfs)
  • Cril 截取字段-生成hostname
  • Git命令归纳
  • 少儿编程路线规划
  • Docker Overlay 网络的核心工作(以跨节点容器通信为例)
  • 公务员行测之速算分数记忆检验-无答案版本
  • 《从理论到实践:CRC校验的魔法之旅》
  • Benewake(北醒) TF-NOVA 在通过TTL-USB转接板更改配置教程
  • VUE快速入门-4:简单入门案例
  • eplan许可证无法识别硬件信息
  • if/switch语句初始化功能
  • MySQL内置函数:字符串函数,数值函数,日期函数,流程控制函数
  • 【unity实战】Unity动画层级(Animation Layer)的Sync同步和Timing定时参数使用介绍,同步动画层制作角色的受伤状态
  • 数据结构基本概念