题目:力扣 6909 :6909. 最长奇偶子数组 - 力扣(LeetCode)
1. 第一种思路就是朴素的暴力枚举:
双指针 子数组计数【力扣周赛 315】Leetcode_哔哩哔哩_bilibili
2. 第二种思路就是:
先思考,每种出现的子串之间有相互覆盖关系么? 若没有,实际上是可以通过 O(N)的方法来做的
O(N)的方式实现有个防止出界的板子:
class Solution {
public:
int longestAlternatingSubarray(vector<int>& nums, int threshold) {
int l=0;
int res=0;
int i=0,len=nums.size();
while(i<len)
{
if(nums[i]%2==1 || nums[i]>threshold) //使用if 来判断左区间开口,每次循环while()的时候就会告知判断的nums[i]会不会出问题
{
i++;
continue;
}
l=i;
i++;
while(i<len && nums[i]<=threshold && nums[i]%2!=nums[i-1]%2)
i++;
res = max(res, i-l);
}
return res;
}
};