力扣978. 最长湍流子数组

力扣978. 最长湍流子数组_第1张图片

刚看到的时候,我的思路是把这两种情况罗列出来,但是因为实在太繁琐,情况太多导致不成功。后来去题解中找灵感,发现可以用排除法来做,如果没有连续三个及以上的那么就一直count++,如果中途有比如 9 8 7三个数出现这种情况的时候count应该等于2.因为8 7 后面的数下面是要分析的,如果大于7下面会加1,就是有三个不一样的,但是湍流已经中断,要重新开始。

class Solution {
     
    public int maxTurbulenceSize(int[] arr) {
            
        int len=arr.length;
        int count=1;
        int max=1;
        for(int i=0;i<arr.length-1;i++){
     
            if(arr[i]<arr[i+1]){
     
                count++;
                if(i!=0&&arr[i-1]<arr[i]){
     
                    count=2;
                }else if(count>max){
     
                    max=count;
                }
            }
            else if(arr[i]>arr[i+1]){
     
                count++;
                if(i!=0&&arr[i-1]>arr[i]){
     
                    count=2;
                }else if(count>max){
     
                    max=count;
                }
            }
            else{
     
                count=1;
            }
        }
			    return max; 
			    }}

第一次做中等难度的题还是有点吃力,还是先打打小怪升升级!

你可能感兴趣的:(力扣,java)