代码随想录 day25

第二十五天

最长奇偶子数组

2760. 最长奇偶子数组 - 力扣(LeetCode)

在下述代码中,我使用了 auto 关键字来声明一个 lambda 函数。

class Solution {
public:
    int longestAlternatingSubarray(vector& nums, int threshold) {
        int left=0, max_l=0, i=0;

        // 寻找数组中下一个偶数且不大于 threshold 的元素的位置
        auto findNextValidStart = [&nums, &threshold](int index) {
            while (index < nums.size() && (nums[index] % 2 != 0 || nums[index] > threshold)) {
                index++;
            }
            return index;
        };

        left = findNextValidStart(left);
        // while(leftthreshold)){
        //     left++;
        // }//第一个left值
        if(left==nums.size())return 0;
        for(i=left+1;ithreshold){//结束一个子数组
                max_l=max(max_l,i-left);//right=i-1
                left=i+1;
                left = findNextValidStart(left);
                i=left;//从left+1开始
            }
            else if((i-left)%2!=nums[i]%2){//结束一个子数组
                max_l=max(max_l,i-left);//right=i-1
                left=i;
                left = findNextValidStart(left);
                i=left;//从left+1开始
            }
        }
        max_l=max(max_l,i-left);
        return max_l;
    }
};

image-20231116205401918

你可能感兴趣的:(算法学习,算法)