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

LeetCode 978 最长湍流子数组 题解

这个题的思路非常简单,只是我的代码没有优化,用的时间复杂度是o(n+n),所以其实还好,给大家说说我的思路,对于本题,我们先研究第一种情况,我们可以通过双下标对其进行维护,再更新l和r下标的同时还能找出最长的湍流子数组的长度,然后就是去优化一些存在的问题即可

有两种特殊情况也需要我们去考虑
一种是数组长度为1,这个比较简单,我们直接判断长度然后返回子数组长度为1即可
还有一种是奇下标和偶下标的值想等,即nums[i]=nums[i+1],当这种情况发生其实也是记作是改变l和r的,只是一开始我没有考虑到,导致有些测试集出现了错误。

当然,既然第一种情况能做出来了,第二种情况其实也同理,我们只需要改变一下符号即可完成对第二种情况的判断,然后再去取最大的湍流子数组即可

class Solution {public int maxTurbulenceSize(int[] arr) {int n = arr.length;int l=0;int r=0;int ans = 0;if(n==1) return 1;for(int i=1;i<n;i++){if(i%2==0&&arr[i]<arr[i-1]){r++;}if(i%2==0&&arr[i]>arr[i-1]){l=i;r=l;}if(i%2!=0&&arr[i]>arr[i-1]){r++;}if(i%2!=0&&arr[i]<arr[i-1]){l=i;r=l;}ans = Math.max(ans,r-l+1);}int bns = 0;l=0;r=0;for(int i=1;i<n;i++){if(i%2==0&&arr[i]>arr[i-1]){r++;}if(i%2==0&&arr[i]<arr[i-1]){l=i;r=l;}if(i%2!=0&&arr[i]<arr[i-1]){r++;}if(i%2!=0&&arr[i]>arr[i-1]){l=i;r=l;}bns = Math.max(bns,r-l+1);}System.out.println("ans:"+ans+"bns:"+bns);return Math.max(ans,bns);}
}

这是我的第一版代码,少了判断奇下标和偶下标的值相等

class Solution {public int maxTurbulenceSize(int[] arr) {int n = arr.length;int l = 0, r = 0;int ans = 0;if (n == 1) return 1;// 第一轮:假设偶数位置是上升,奇数位置是下降for (int i = 1; i < n; i++) {if (i % 2 == 0 && arr[i] < arr[i - 1]) {r++;} else if (i % 2 == 0 && arr[i] > arr[i - 1]) {l = i;r = l;} else if (i % 2 != 0 && arr[i] > arr[i - 1]) {r++;} else if (i % 2 != 0 && arr[i] < arr[i - 1]) {l = i;r = l;} else { // arr[i] == arr[i-1]l = i;r = i;}ans = Math.max(ans, r - l + 1);}// 第二轮:假设偶数位置是下降,奇数位置是上升int bns = 0;l = 0;r = 0;for (int i = 1; i < n; i++) {if (i % 2 == 0 && arr[i] > arr[i - 1]) {r++;} else if (i % 2 == 0 && arr[i] < arr[i - 1]) {l = i;r = l;} else if (i % 2 != 0 && arr[i] < arr[i - 1]) {r++;} else if (i % 2 != 0 && arr[i] > arr[i - 1]) {l = i;r = l;} else {l = i;r = i;}bns = Math.max(bns, r - l + 1);}// System.out.println("ans:" + ans + " bns:" + bns);return Math.max(ans, bns);}
}

还有就是祝大家今天的五一假期能好好休息,快快乐乐。

http://www.xdnf.cn/news/3586.html

相关文章:

  • 掉馅饼,八分之一到二分之一:《分析模式》漫谈59
  • OpenAI已经紧急修复了GPT-4o存在的过度讨好用户的问题,现已将系统回滚到之前的旧版本。
  • 蓝桥杯获奖后心得体会
  • 蓝莓的功效与作用 蓝莓叶黄素对眼睛真的有用吗
  • # 交通标志识别:使用卷积神经网络的完整实现
  • 我试用了50个AI工具——AI正在如何改变设计方式
  • 高并发场景下的MySQL生存指南
  • 进程与线程:04 内核线程
  • 蓝桥杯比赛
  • 2022 年 12 月大学英语四级考试真题(第 1 2 3 套)——解析版——篇章题
  • 3.2/Q2,Charls最新文章解读
  • 【白雪讲堂 】GEO兴起:AI搜索时代的内容优化新战场
  • 第四章 Maven
  • 高斯数据库安装步骤
  • 小米MiMo:7B模型逆袭AI大模型战场的技术密码
  • Vision as LoRA论文解读
  • 【工具变量】上市公司治理水平数据集-含参考文献及dta、xlsx格式(2003-2023年)
  • Python协程入门指北
  • 深度学习系统学习系列【1】之基本知识
  • watch 数组 Vue 3
  • 第七章:赤 色广播计划的全面启动
  • Java面试高频问题(31-33)
  • Selenium3自动化测试,Python3测试开发教程视频测试用例设计
  • 2025年渗透测试面试题总结-拷打题库30(题目+回答)
  • 【算法扩展】斐波那契查找算法 - JAVA
  • Python地图绘制模块cartopy入门
  • 跨境电商物流革命:俄罗斯市场8000节点布局深度解析与卖家实战策略
  • Learning vtkjs之OBBTree
  • 油气地震资料数据中“照明”的含义
  • 2024 网络安全回顾与 2025 展望:守护数字世界的新征程