简单题简单做,纯模拟就行了。
思路:
优化相关:
class Solution {
public:
int alternatingSubarray(vector<int>& nums) {
int res = -1, n = nums.size();
for (int i = 0; i < n; i ++ ) {
int cnt = 0;
int a = nums[i];
for (int j = i + 1; j < n; j ++ ) {
int b = nums[j];
if (cnt % 2 == 0) {
if (b - a == 1) cnt ++ ;
else break;
} else {
if (b - a == -1) cnt ++ ;
else break;
}
a = b;
}
if (cnt > 0) cnt ++ , res = max(res, cnt);
}
return res;
}
};
优化 cnt:
class Solution {
public:
int alternatingSubarray(vector<int>& nums) {
int res = -1;
int n = nums.size();
for (int firstIndex = 0; firstIndex < n; firstIndex++) {
for (int i = firstIndex + 1; i < n; i++) {
int length = i - firstIndex + 1;
if (nums[i] - nums[firstIndex] == (length - 1) % 2) {
res = max(res, length);
} else {
break;
}
}
}
return res;
}
};