【leetcode 滑动窗口 C++】978. Longest Turbulent Subarray

978. Longest Turbulent Subarray

在这里插入图片描述

class Solution {
    
    
public:
    int maxTurbulenceSize(vector<int>& arr) {
    
    
        if(arr.size() == 1) return 1;
        int tag = 1;
        int ans = 0;
        for(int l = 0, r = 1; r < arr.size(); r++) {
    
    
            tag = (arr[r] - arr[r - 1]) > 0 ? 1 : -1;
            if(arr[r] == arr[r - 1]) l = r;
            tag = r % 2 == l % 2 ? tag : -tag;
            while(l + 1 < r && (arr[l] - arr[l+1]) * tag <= 0) l++, tag *= -1;
            if(l + 1 == r && arr[l] == arr[r]) l++;
            ans = max(ans, r - l + 1);
        }
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/m0_37454852/article/details/114305811