赞
踩
每次都以两个相邻作为满足要求的循环数据,并且以一个布尔变量控制循环的位置
时间复杂度:O(n)
空间复杂度:O(1)
public int alternatingSubarray(int[] nums) { int n=nums.length; int a=nums[0]; int b=nums[1]; int res=b-a==1?2:-1; int t=res; boolean flag=false; for(int i=2;i<n;i++){ int c=nums[i]; int d=!flag?a:b; //不仅仅判断是否形成循环,还要判断拟定的循环数据是不是满足要求 if(c==d&&t!=-1){ flag=!flag; t+=1; }else{ a=nums[i-1]; b=c; flag=false; res=Math.max(res,t); t=b-a==1?2:-1; } } res=Math.max(res,t); return res; }
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。