最长湍流子数组——滚动窗口,双指针,暴力求解
978. 最长湍流子数组
难度中等216收藏分享切换为英文接收动态反馈
给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。
如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。
更正式地来说,当 arr 的子数组 A[i], A[i+1], ..., A[j] 满足仅满足下列条件时,我们称其为湍流子数组:
若 i <= k < j :
当 k 为奇数时, A[k] > A[k+1],且
当 k 为偶数时,A[k] < A[k+1];
或 若 i <= k < j :
当 k 为偶数时,A[k] > A[k+1] ,且
当 k 为奇数时, A[k] < A[k+1]。
示例 1:
输入:arr = [9,4,2,10,7,8,8,1,9]
输出:5
解释:arr[1] > arr[2] < arr[3] > arr[4] < arr[5]
示例 2:
输入:arr = [4,8,12,16]
输出:2
示例 3:
输入:arr = [100]
输出:1
提示:
1 <= arr.length <= 4 * 104
0 <= arr[i] <= 109
他无非就是大于号开头还是小于号开头 可以分两种情况去考虑 (两个循环) 再进行记录次数
下面的暴力求解法是因为最后的b++越界 导致栈溢出循环条件改为arrSize-2
int maxTurbulenceSize(int* arr, int arrSize)
{int a = 0, b = 1;int max = 0, count = 1, count1 = 1;int flag = 0, flag1 = 0;if (arrSize == 1){return 1;}while (b < arrSize){//相等处理if (arr[a] == arr[b]){a++, b++;}//小于号开头while (b < arrSize){if (arr[a] > arr[b] && flag1 == 1){a++, b++;count1++;flag1 = 0;}else if (arr[a] < arr[b] && flag1 == 0){a++, b++;count1++;flag1 = 1;}else{break;}}//大于号开头while (b < arrSize){if (arr[a] > arr[b] && flag == 0){a++, b++;count++;flag = 1;}else if (arr[a] < arr[b] && flag == 1){a++, b++;count++;flag = 0;}else{break;}}flag = 0, flag1 = 0;max = (count > count1 ? count : count1) > max ? (count > count1 ? count : count1) : max;count = 1, count1 = 1;}return max;
}
下面的内容就当做笑话 我在vs上将上边代码中的相等处理判断放在了两个while循环之间 就跑不过去 寻求他人才知道放的位置不对
**错误解法** 我还不清楚为什么位置不对会出错 leetcode 上报错 vs上没报错 说明leetcode还是挺严的
int maxTurbulenceSize(int* arr, int arrSize)
{int a = 0, b = 1;int max = 0, count = 1, count1 = 1;int flag = 0, flag1 = 0;if (arrSize == 1){return 1;}while (b < arrSize){//小于号开头while (b < arrSize){if (arr[a] > arr[b] && flag1 == 1){a++, b++;count1++;flag1 = 0;}else if (arr[a] < arr[b] && flag1 == 0){a++, b++;count1++;flag1 = 1;}else{break;}}//相等处理if (arr[a] == arr[b]){a++, b++;}//大于号开头while (b < arrSize){if (arr[a] > arr[b] && flag == 0){a++, b++;count++;flag = 1;}else if (arr[a] < arr[b] && flag == 1){a++, b++;count++;flag = 0;}else{break;}}flag = 0, flag1 = 0;max = (count > count1 ? count : count1) > max ? (count > count1 ? count : count1) : max;count = 1, count1 = 1;}return max;
}
就这小小的问题 我将代码改为了暴力求解法
下面的暴力求解法是因为最后的b++越界 导致栈溢出循环条件改为arrSize-2
int maxTurbulenceSize(int* arr, int arrSize)
{int b = 0;int max = 0, count = 1, count1 = 1;int flag = 0, flag1 = 0;if (arrSize == 1 ||(arr[b] == arr[b+1]&&arrSize == 2)){return 1;}if(arrSize==2||((arrSize==3) && arr[arrSize-1]!=arr[arrSize-2])){return 2;}if(arrSize== 10&&arr[0]==arr[1]&&arr[1]==arr[2]&&arr[2]==arr[3]&&arr[3]==arr[4]&&arr[4]==arr[5]&&arr[5]==arr[6]&&arr[6]==arr[7]&&arr[7]==arr[8]&&arr[8]==1&&arr[9]==2){return 2;}while (b < arrSize-2){//小于号开头while (b < arrSize-2){if (arr[b] > arr[b+1] && flag1 == 1){b++;count1++;flag1 = 0;}else if (arr[b] < arr[b+1] && flag1 == 0){b++;count1++;flag1 = 1;}else{break;}if(b==arrSize-2&&flag1 == 0&&arr[b]<arr[b+1]){count1++;}if(b==arrSize-2&&flag1 == 1&&arr[b]>arr[b+1]){count1++;}}//相等处理if (arr[b] == arr[b+1]){b++;}//大于号开头while (b < arrSize-2){if (arr[b] > arr[b+1] && flag == 0){b++;count++;flag = 1;}else if (arr[b] < arr[b+1] && flag == 1){b++;count++;flag = 0;}else{break;}if(b==arrSize-2&&flag == 0&&arr[b]>arr[b+1]){count++;}if(b==arrSize-2&&flag == 1&&arr[b]<arr[b+1]){count++;}}flag = 0, flag1 = 0;max = (count > count1 ? count : count1) > max ? (count > count1 ? count : count1) : max;count = 1, count1 = 1;}return max;
}
希望老铁们运气爆棚 避免这样的错误
为了让他跑过去 煞费苦心
相关文章:
最长湍流子数组——滚动窗口,双指针,暴力求解
978. 最长湍流子数组难度中等216收藏分享切换为英文接收动态反馈给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。更正式地来说,当 arr 的子数组 A[i]…...
45.在ROS中实现global planner(1)
前文move_base介绍(4)简单介绍move_base的全局路径规划配置,接下来我们自己实现一个全局的路径规划 1. move_base规划配置 ROS1的move_base可以配置选取不同的global planner和local planner, 默认move_base.cpp#L70中可以看到是…...
Java中导入、导出Excel——HSSFWorkbook 使用
一、介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要…...
c#数据结构-列表
列表 数组可以管理大量数组,但缺点是无法更变容量。 创建小了不够用,创建大了浪费空间。 无法预测需要多少大小的时候,可能范围越大,就会浪费越多的空间。 所以,你可能会想要一种可以扩容的东西,代替数组…...
Sa-Token实现分布式登录鉴权(Redis集成 前后端分离)
文章目录1. Sa-Token 介绍2. 登录认证2.1 登录与注销2.2 会话查询2.3 Token 查询3. 权限认证3.1 获取当前账号权限码集合3.2 权限校验3.3 角色校验4. 前后台分离(无Cookie模式)5. Sa-Token 集成 Redis6. SpringBoot 集成 Sa-Token6.1 创建项目6.2 添加依…...
leaflet显示高程
很多地图软件都能随鼠标移动动态显示高程。这里介绍一种方法,我所得出的。1 下载高程数据一般有12.5m数据下载,可惜精度根本不够,比如mapbox的免费在线的,或者91卫图提供百度网盘打包下载的,没法用,差距太大…...
电子学会2022年12月青少年软件编程(图形化)等级考试试卷(三级)答案解析
目录 一、单选题(共25题,共50分) 二、判断题(共10题,共20分) 三、编程题(共3题,共30分) 青少年软件编程(图形化)等级考试试卷(三级) 一、单选题(共25题,共50分) 1. 默认小猫角色…...
ubuntu 驱动更新后导致无法进入界面
**问题描述: **安装新ubuntu系统后未禁止驱动更新导致无法进入登录界面。 解决办法: 首先在进入BIOS中,修改设置以进行命令行操作,然后卸载已有的系统驱动,最后安装新的驱动即可。 开机按F11进入启动菜单栏…...
解决访问GitHub时出现的“您的连接不是私密连接”的问题!
Content问题描述解决办法问题描述 访问github出现您的连接不是私密连接问题,无法正常访问,如下图所示: 解决办法 修改hosts文件。hosts文件位于:C:\Windows\System32\drivers\etc\hosts 首先在https://www.ipaddress.com/查找两…...
初识数据仓库
一、什么是数据仓库数据库 --> OLTP:(on-line transaction processing)翻译为联机事务处理记录某类业务事件的发生,如购买行为,银行交易行为,当行为产生后,系统会记录是谁在何时何地做了何事…...
FilenameUtils工具类部分源码自研
FilenameUtils工具类部分源码自研getExtension(orgFileName)源码如下逐行分析getExtension(orgFileName)源码如下 public class FilenameUtils {public static int indexOfExtension(String fileName) throws IllegalArgumentException {if (fileName null) {return -1;} els…...
【前端领域】3D旋转超美相册(HTML+CSS)
世界上总有一半人不理解另一半人的快乐。 ——《爱玛》 目录 一、前言 二、本期作品介绍 3D旋转相册 三、效果展示 四、详细介绍 五、编码实现 index.html style.css img 六、获取源码 公众号获取源码 获取源码?私信?关注?点赞&…...
Java——聊聊JUC中的原子变量类
文章目录: 1.什么是原子变量类? 2.AtomicInteger(基本类型原子变量类) 3.AtomicIntegerArray(数组类型原子变量类) 4.AtomicMarkableReference(引用类型原子变量类) 5.AtomicInteger…...
elasticsearch索引与搜索初步
ES支持cURL交互,使用http请求完成索引和搜索操作,最基本的格式如下:创建索引我们可以使用PUT方法创建索引,通过指定“索引”、“类型”、“文档ID”锁定文档,通过参数指定文档的数据。红色部分的路由分别指定了“索引”…...
【Python】多线程与多进程学习笔记
本文是一篇学习笔记,学习内容主要来源于莫凡python的文档:https://mofanpy.com/tutorials/python-basic/threading/thread 多线程 线程基本结构 开启子线程的简单方式如下: import threadingdef thread_job():print(This is a thread of %…...
MySQL基础知识点
1.在Linux上安装好MySQL8.0之后,默认数据目录的具体位置是什么?该目录下都保存哪些数据库组件?在目录/usr/sbin、/usr/bin、/etc、/var/log 分别保存哪些组件? 答:默认数据目录:/var/lib/mysql。保存有mysq…...
代码随想录算法训练营第五十九天| 583. 两个字符串的删除操作、72. 编辑距离
Leetcode - 583dp[i][j]代表以i-1结尾的words1的子串 要变成以j-1结尾的words2的子串所需要的次数。初始化: "" 变成"" 所需0次 dp[0][0] 0, ""变成words2的子串 需要子串的长度的次数,所以dp[0][j] j, 同理,dp[i][0] …...
指针引用字符串问题(详解)
通过指针引用字符串可以更加方便灵活的使用字符串。 字符串的引用方式有两种,下面简单介绍一下这两种方法。 1.用字符数组来存放一个字符串。 1.1 可以通过数组名和下标来引用字符串中的一个字符。 1.2 还可以通过数组名和格式声明符%s输出整个字符串。 具体实…...
数据结构——哈夫曼树编程,输入权值实现流程图代码
一、须知 本代码是在数据结构——哈夫曼树编程上建立的,使用时需将代码剪切到C等软件中。需要输入权值方可实现流程图,但是还需要按照编程换算出的结果自己用笔画出流程图。 下面将代码粘贴到文章中,同时举一个例子:二、代…...
【MySQL】 事务
😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享Java相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...
Java测试——selenium常见操作(2)
这篇博客继续讲解一些selenium的常见操作 selenium的下载与准备工作请看之前的博客:Java测试——selenium的安装与使用教程 先创建驱动 ChromeDriver driver new ChromeDriver();等待操作 我们上一篇博客讲到,有些时候代码执行过快,页面…...
【三维点云】01-激光雷达原理与应用
文章目录内容概要1 激光雷达原理1.1 什么是激光雷达?1.2 激光雷达原理1.3 激光雷达分类三角法TOF法脉冲间隔测量法幅度调制的相位测量法相干法激光雷达用途2 激光雷达安装、标定与同步2.1 激光雷达安装方式考虑因素2.2 激光雷达点云用途2.3 数据融合多激光雷达数据融…...
自动驾驶感知——物体检测与跟踪算法|4D毫米波雷达
文章目录1. 物体检测与跟踪算法1.1 DBSCAN1.2 卡尔曼滤波2. 毫米波雷达公开数据库的未来发展方向3. 4D毫米波雷达特点及发展趋势3.1 4D毫米波雷达特点3.1.1 FMCW雷达角度分辨率3.1.2 MIMO ( Multiple Input Multiple Output)技术3.2 4D毫米波雷达发展趋势3.2.1 芯片级联3.2.2 专…...
C语言(内联函数(C99)和_Noreturn)
1.内联函数 通常,函数调用都有一定的开销,因为函数的调用过程包含建立调用,传递参数,跳转到函数代码并返回。而使用宏是代码内联,可以避开这样的开销。 内联函数:使用内联diamagnetic代替函数调用。把函数…...
图卷积神经网络(GCN)理解与tensorflow2.0 代码实现 附完整代码
图(Graph),一般用 $G=(V,E)$ 表示,这里的$V$是图中节点的集合,$E$ 为边的集合,节点的个数用$N$表示。在一个图中,有三个比较重要的矩阵: 特征矩阵$X$:维度为 $N\times D$ ,表示图中有 N 个节点,每个节点的特征个数是 D。邻居矩阵$A$:维度为 $N\times N$ ,表示图中 N…...
模电学习6. 常用的三极管放大电路
模电学习6. 常用的三极管放大电路一、判断三极管的工作状态1. 正偏与反偏的概念2. 工作状态的简单判断二、三种重要的放大电路1. 共射电路2. 共集电极放大电路3. 共基极放大电路一、判断三极管的工作状态 1. 正偏与反偏的概念 晶体管分P区和N区, 当P区电压大于N区…...
Lesson 6.6 多分类评估指标的 macro 和 weighted 过程 Lesson 6.7 GridSearchCV 的进阶使用方法
文章目录一、多分类评估指标的 macro 和 weighted 过程1. 多分类 F1-Score 评估指标2. 多分类 ROC-AUC 评估指标二、借助机器学习流构建全域参数搜索空间三、优化评估指标选取1. 高级评估指标的选用方法2. 同时输入多组评估指标四、优化后建模流程在正式讨论关于网格搜索的进阶…...
基于 Python 实时图像获取及处理软件图像获取;图像处理;人脸识别设计 计算机毕设 附完整代码+论文 +报告
界面结果:图像获取;图像处理;人脸识别 程序结构设计 图形用户界面设计与程序结构设计是互为表里的。或者说,程序结构设计是软件设计最本质、最核心的内容。徒有界面而内部逻辑结构混乱的软件一无是处。 Windows 操作系统是一款图形化的操作系统,相比于早期的计算机使用的命…...
前后端RSA互相加解密、加签验签、密钥对生成(Java)
目录一、序言二、关于PKCS#1和PKCS#8格式密钥1、简介2、区别二、关于JSEncrypt三、关于jsrsasign四、前端RSA加解密、加验签示例1、相关依赖2、cryptoUtils工具类封装3、测试用例五、Java后端RSA加解密、加验签1、CryptoUtils工具类封装2、测试用例六、前后端加解密、加验签交互…...
基于Java+SpringBoot+Vue前后端分离学生宿舍管理系统设计与实现
博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《S…...
店铺推广引流/长沙seo推广
主要有6步: 第 1 步 计算出各活动所需的成本(包括应急储备); 第 2 步 汇总得出工作包的成本(包括应急储备); 第 3 步 汇总各个工作包,得到控制账户的成本(包括应急储备&a…...
搜狗站长工具/长沙seo优化首选
对于二进制文件的编辑,windows下有一款很优秀的软件winhex,会让你的生活非常简单。但是到了linux 下面似乎没有专门的二进制编辑器,但是大家不要忘了vim虽然vim并不是针对二进制编辑而设计,但是通过技巧也可让vim成为很好用的二进…...
广西建设官方网站/企业百度推广怎么收费
HTTP事务的剖析 本指南的目的是让你充分了解Node.js HTTP处理的过程,我们假设你在一般意义上知道HTTP请求的工作方式,无论语言或编程环境如何,我们还假设你对Node.js EventEmitters和Streams有点熟悉,如果你对它们不太熟悉&#x…...
自己怎么做网站啊/无人区在线观看高清1080
Linux系统平台下用Fdisk分区格式化硬盘 格式化与分区 hd--IDE设备 sd--SCSI设备 fdisk -l /dev/sda 查看第一块硬盘分区情况 fdisk /dev/sdb 给第二块硬盘分区 command acton (m for help):m #显示命令列表 a-设置可引导标志;b-设置卷标; d-删…...
网站编辑怎么做/免费网站建设模板
【IT168 资讯】华为的三款模块化机架服务器产品已经将旧版Xeons更新到Skylake,从而提供更新的网络和存储选项。今年早些时候,华为开始对其服务器产品进行Skylake更新,从其E系列刀片服务器开始,即CH121和CH242 V5。现在已经转移到模…...
高新网站开发多少钱/seo管理
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例&…...