题意为在给定数组中找满足不断+1再-1的子数组,并称为交替子数组。要求返回最长的交替子数组。
代码如下:
public class Solution {
public int alternatingSubarray(int[] nums) {
boolean flag=false;//表示没有找到最长交替子数组
for(int i=0;i<nums.length-1;i++) {
if(nums[i+1]-nums[i]==1) {
flag=true;
}
}
if(flag==false) return -1;
int max=2;
int i=0,j=1;
while(j<nums.length) {
int len=1;//临时长度
while(j<nums.length&&nums[j]-nums[i]==1) {//找到入口
len++;
if(j+1<nums.length&&nums[j+1]-nums[i+1]==-1) {
len++;
j+=2;
i+=2;
}
else break;
}
if(len>max) max=len;
i++;
j++;
}
return max;
}
}