【动态规划】24子数组系列_最长湍流子数组_C++
题目链接:最长湍流子数组
目录
题目解析:
算法原理
1.状态表示
2.状态转移方程
3.初始化
4.填表顺序
5.返回值
编写代码
题目解析:

题目让我们求返回 arr 的 最大湍流子数组的长度
由题可得:
如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组;
算法原理:
1.状态表示
先创建一个dp表

首先先思考dp表里面的值所表示的含义(是什么?)
这里我们需要两个dp表:
f[i]:以i位置为结尾,i位置为“上升”的最大湍流子数组的长度
g[i]:以i位置为结尾,i位置为“下降”的最大湍流子数组的长度
这种状态表示怎么来的?
1.经验+题目要求
用之前或者之后的状态,推导出dp[i][j]的值;
根据最近的最近的一步,来划分问题
经验:以i位置为结尾;
题目让我们返回 arr 的 最大湍流子数组的长度 ,
所以我们可以先设一个“dp表”表示以i位置为结尾,i位置最大湍流子数组的长度。
但是我们会发现:
只有一个dp表无法表示该位置的状态,状态分得还不够细(是>还是<)
所以这里我们尝试再加一个状态表示:
f[i]:以i位置为结尾,i位置为“上升”的最大湍流子数组的长度
g[i]:以i位置为结尾,i位置为“下降”的最大湍流子数组的长度
2.状态转移方程
dp[i]等于什么?
以i位置为结尾有三种情况:

只有是情况1和2时才有可能时湍流子数组;
根据我们的状态表示:
情况一(i位置为“上升”):

那么需要前面一个位置是“下降”的才满足湍流子数组;
所以此时i位置的最长湍流子数组应该是前面一个位置为“下降”的最长湍流子数组的长度+1;
而“前面一个位置为“下降”的最长湍流子数组的长度”就是我们的状态表示:g[i-1]
所以:f[i]=g[i-1]+1
情况二(i位置为“下降”):

那么需要前面一个位置是“上升”的才满足湍流子数组;
所以此时i位置的最长湍流子数组应该是前面一个位置为“上升”的最长湍流子数组的长度+1;
而“前面一个位置为“上升”的最长湍流子数组的长度”就是我们的状态表示:g[i-1]
所以:g[i]=f[i-1]+1
3.初始化
(保证填表的时候不越界)
我们是从第二个元素比的,所以把要把前面的都初始化为1
4.填表顺序
(为了填写当前状态的时候,所需要的状态已经计算过了)
这里所需要的状态是:[i-1]
所以填表顺序从左往右
5.返回值
(根据题目要求和状态表示)
综上分析:
返回值为:两个表里的最大值
编写代码:

class Solution {
public:int maxTurbulenceSize(vector<int>& arr) {//1.创建dp表//2.初始化//3.填表//4.返回结果int n=arr.size();vector<int> f(n+1,1);auto g=f;int ret=1;for(int i=2;i<n+1;i++){if(arr[i-1]>arr[i-2]){f[i]=g[i-1]+1;}else if(arr[i-1]<arr[i-2]){g[i]=f[i-1]+1;}ret=max({(int)ret,g[i],f[i]});}return ret;}
};
相关文章:
【动态规划】24子数组系列_最长湍流子数组_C++
题目链接:最长湍流子数组 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们求返回 arr 的 最大湍流子数组的长度 由题可得: 如果比较符号在子数组中的…...
fastJson和jackson的日期数据处理
目录 1.jackson 2.fastjson 3.总结 1.jackson jackson是spring mvc默认的JSON解析方法,前端的数据序列化处理之后,后端经过反序列化处理可以直接使用实体对象进行接收。后端接口返回实体对象,经过序列化处理后前端可以接收并进行处理。 …...
书生·浦语大模型实战营第五节课笔记及作业
LMDeploy 大模型量化部署实践 1 大模型部署背景 1.1 模型部署及大模型特点 1.2 大模型部署挑战及方案 2 LMDeploy简介 2.1 核心功能-量化 2.2 核心功能-推理引擎TurboMind 2.1 核心功能-推理服务api server 3 动手实践及作业 按照文档LMDeploy 的量化和部署中的步骤在Intern…...
如何在CentOS 7 中基于OpenSSL 3.0 搭建Python 3.0 环境
1、OpenSSL 1.1 原因 [rootlocalhost ~]# openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 [rootlocalhost ~]#通过执行openssl version可知Linux系统已经安装了OpenSSL,但该版本较低;Python 3 要求 OpenSSL版本不能低于1.1.1,否则安装P…...
爬虫接口获取外汇数据(汇率,外汇储备,贸易顺差,美国CPI,M2,国债利率)
akshare是一个很好用的财经数据api接口,完全免费!!和Tushare不一样。 除了我标题显示的数据外,他还提供各种股票数据,债券数据,外汇,期货,宏观经济,基金,银行…...
Spring Cloud和微服务架构的关系
大话Spring Cloud 在Java悠久的历史长河中(其实也就十来年),有一个框架自诞生之初就成了Java企业级开发领域的弄潮儿,它以开放的姿态不断引领着技术改革(我们管他叫Java领域的“改革开放”),它就是久经考验的企业级开发框架,改革…...
C++:通过ofstream写入二进制文件内容
C++:通过ifstream读取二进制文件内容_c++ ifstream 二进制读取-CSDN博客 介绍了读取二进制文件的方法。 本文介绍一下写入二进制数据到文件的方法: 1.通过write #include <fstream> #include <string> using namespace std; int main() {int data = 0x0102030…...
系统配置dns主从服务器
一、准备两台主机,区分主从 二、完全区域传送 1、主DNS服务器配置 #安装相关的包 [rootoula1 ~]# yum install bind -y#关闭防火墙 [rootoula1 ~]# systemctl stop firewalld [rootoula1 ~]# setenforce 0#修改配置主文件 [rootoula1 ~]# vim /etc/named.conf opt…...
【git】解决网络连接问题
ssh: connect to host github.com port 22: Connection timed out $ ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. bash: ssh:: command not found bash: fatal:: command not found无效 检查网络…...
限制API接口访问速率
文章目录 依赖注解aophelperTest 免责声明:本人无意侵权,奈何找不到原文作者,也找不到网址,于是自己记录一下,如果有侵权之嫌,请联系我删除文章 依赖 <!-- https://mvnrepository.com/artifact/com.goo…...
广东省第三届职业技能大赛“网络安全项目”B模块--数字取证解析
广东省第三届职业技能大赛“网络安全项目”B模块任务书 PS: 关注鱼影安全第一部分 网络安全事件响应第二部分 数字取证调查任务 3: 网络数据包分析取证解析:第三部分 应用程序安全:需要环境可以私信博主~PS: 关注鱼影安全 模块 B 竞赛项目试题 本文件为:广东省第三届职业技…...
全链路压力测试:现代软件工程中的重要性
全链路压力测试不仅可以确保系统在高负载下的性能和稳定性,还能帮助企业进行有效的风险管理和性能优化。在快速发展的互联网时代,全链路压力测试已成为确保软件产品质量的关键步骤。 1、测试环境搭建 测试应在与生产环境尽可能相似的环境中进行ÿ…...
【计算机网络】难点、易遗忘点总结
文章目录 1. 单工通信、半双工通信和全双工通信2. TCP的三次握手和四次挥手 1. 单工通信、半双工通信和全双工通信 主要区别在于信息传输的方向和时间安排。单工通信是指信息只能在一个方向上传输的通信方式。半双工通信允许信息在两个方向上传输,但在任何给定的时…...
谷达冠楠科技:抖音开网店新手小白可以卖的产品
随着互联网的发展,越来越多的人选择在网上开设自己的店铺。而抖音作为目前最火的短视频平台,也提供了开店的功能。那么,对于新手小白来说,抖音开网店可以卖哪些产品呢? 我们可以考虑的是服装类商品。抖音上有很多时尚博主&#x…...
爬虫案例—根据四大名著书名抓取并存储为文本文件
爬虫案例—根据四大名著书名抓取并存储为文本文件 诗词名句网:https://www.shicimingju.com 目标:输入四大名著的书名,抓取名著的全部内容,包括书名,作者,年代及各章节内容 诗词名句网主页如下图&#x…...
阿里云容器服务助力万兴科技 AIGC 应用加速
作者:子白(顾静) 2023 年堪称是 AIGC 元年,文生图领域诞生了 Stable Diffusion 项目,文生文领域诞生了 GPT 家族。一时间风起云涌,国内外许多企业投身 AIGC 创新浪潮,各大云厂商紧随其后纷纷推…...
STM32F103标准外设库——认识STM32(一)
个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…...
设计模式——1_5 享元(Flyweight)
今人不见古时月,今月曾经照古人 ——李白 文章目录 定义图纸一个例子:可以复用的样式表绘制表格降本增效?第一步,先分析 变化和不变的地方第二步,把变化和不变的地方拆开来第三步:有没有办法共享这些内容完…...
kafka系列(二)
本章承接kafka一内容,文章在本人博客主页都有,可以自行点击浏览。 幂等性 请求执行多次,但执行的结果是一致的。 如果,某个系统是不具备幂等性的,如果用户重复提交了某个表格,就可能会造成不良影响。例如…...
Ubuntu20.04安装配置OpenCV-Python库并首次执行读图
一、选择三方提供的预编译包安装: 可以从官网下载 OpenCV 的安装包,编译后使用;也可以直接使用第三方提供的预编译包 安装。显然后者不需要执行编译步骤,更便捷。选择由 PyPI 提供的 OpenCV 安装包,可以在 https://py…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
