给你一个整数数组 nums 。
返回数组 nums 中
严格递增 或 严格递减 的最长非空子数组的长度。
示例 1:
输入:nums = [1,4,3,3,2]
输出:2
解释:
nums 中严格递增的子数组有[1]、[2]、[3]、[3]、[4] 以及 [1,4] 。
nums 中严格递减的子数组有[1]、[2]、[3]、[3]、[4]、[3,2] 以及 [4,3] 。
因此,返回 2 。
示例 2:
输入:nums = [3,3,3,3]
输出:1
解释:
nums 中严格递增的子数组有 [3]、[3]、[3] 以及 [3] 。
nums 中严格递减的子数组有 [3]、[3]、[3] 以及 [3] 。
因此,返回 1 。
示例 3:
输入:nums = [3,2,1]
输出:3
解释:
nums 中严格递增的子数组有 [3]、[2] 以及 [1] 。
nums 中严格递减的子数组有 [3]、[2]、[1]、[3,2]、[2,1] 以及 [3,2,1] 。
因此,返回 3 。
int longestMonotonicSubarray(int* nums, int numsSize) {
if(numsSize==1)
return 1;
int maxLength=1;
int length2=1;
int type=1; //1是加,2是减
int i=0;
for(;i<numsSize-1;i++){
if(nums[i]>nums[i+1]){
if(type==2)
length2++;
else {
length2=2;
type=2;
}
}else if(nums[i]<nums[i+1]){
if(type==1)
length2++;
else{
length2=2;
type=1;
}
}else{
length2=1;
}
if(length2>maxLength)
maxLength=length2;
}
return maxLength;
}