当前位置:网站首页>978. 最长湍流子数组

978. 最长湍流子数组

2022-06-09 09:28:00 Mr Gao

978. 最长湍流子数组

给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。

如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。

更正式地来说,当 arr 的子数组 A[i], A[i+1], …, A[j] 满足仅满足下列条件时,我们称其为湍流子数组:

若 i <= k < j :
    当 k 为奇数时, A[k] > A[k+1],且
    当 k 为偶数时,A[k] < A[k+1];
或 若 i <= k < j :
    当 k 为偶数时,A[k] > A[k+1] ,且
    当 k 为奇数时, A[k] < A[k+1]。

示例 1:

输入:arr = [9,4,2,10,7,8,8,1,9]
输出:5
解释:arr[1] > arr[2] < arr[3] > arr[4] < arr[5]

示例 2:

输入:arr = [4,8,12,16]
输出:2

示例 3:

输入:arr = [100]
输出:1

这题挺难的,但是我们慢慢来:

int maxTurbulenceSize(int* arr, int arrSize){
    
    int i;
    int maxo=1;
    int maxe=1;
    int anso=1;
    for(i=1;i<arrSize;i=i+2){
            
        if(i==arrSize-1){
    
            if(arr[i]>arr[i-1]){
    
                anso++;
            }
        }
          if(i<arrSize-1)
        if(arr[i]<=arr[i-1]&&arr[i]<=arr[i+1]){
    
            if(anso>maxo){
    
                maxo=anso;
            }
            anso=1;
            continue;
          
        }
          if(i<arrSize-1)
         if(arr[i]<=arr[i-1]&&arr[i]>arr[i+1]){
    
            if(anso>maxo){
    
                maxo=anso;
            }
            anso=2;
            continue;
          
        }

        if(i<arrSize-1)
         if(arr[i]>arr[i-1]&&arr[i]<=arr[i+1]){
    
              anso=anso+1;
            if(anso>maxo){
    
                maxo=anso;
            }
              anso=1;
            
           
        }
        else{
    
            anso=anso+2;
        }

    }
 if(anso>maxo){
    
                maxo=anso;
            }
     // printf("o %d ",maxo);
         int  anse=1;
      for(i=1;i<arrSize;i=i+2){
    
         // printf("%d anso %d ",arr[i],anse);
         if(i==arrSize-1){
    
            if(arr[i]<arr[i-1]){
    
                anse++;
            }
        }

           if(i<arrSize-1)
        if(arr[i]>=arr[i-1]&&arr[i]>=arr[i+1]){
    
            if(anse>maxe){
    
                maxe=anse;
            }
        // printf("e %d ",maxe);
            anse=1;
            continue;
        }
          if(i<arrSize-1)
          if(arr[i]>=arr[i-1]&&arr[i]<arr[i+1]){
    
            if(anse>maxe){
    
                maxe=anse;
            }
         // printf("e %d ",maxe);
            anse=2;
            continue;
          
        }

         if(i<arrSize-1)
         if(arr[i]<arr[i-1]&&arr[i]>=arr[i+1]){
    
              anse=anse+1;
            if(anse>maxe){
    
                maxe=anse;
            }
       // printf("e %d ",maxe);
              anse=1;
           
        }
        else{
    
            anse=anse+2;
        }

    }
     if(anse>maxe){
    
                maxe=anse;
            }
     // printf("e %d ",maxe);
      
    if(maxe>maxo){
    
        return maxe;
    }

    else{
    
        return maxo;
    }


}
原网站

版权声明
本文为[Mr Gao]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43327597/article/details/125195068