zoukankan      html  css  js  c++  java
  • Leetcode978. 最长湍流子数组

    978. 最长湍流子数组

    Difficulty: 中等

    A 的子数组 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]

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

    返回 A 的最大湍流子数组的长度

    示例 1:

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

    示例 2:

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

    示例 3:

    输入:[100]
    输出:1
    

    提示:

    1. 1 <= A.length <= 40000
    2. 0 <= A[i] <= 10^9

    Solution

    Language: java

    ​class Solution {
        public int maxTurbulenceSize(int[] arr) {
            if(arr.length<2) return arr.length;
            int max = 0, preLen = 1;
            char sign = arr[0] < arr[1] ? '<' : (arr[0] == arr[1] ? '=' : '>');
            for(int i=1; i<arr.length; i++){
                char t = arr[i-1] < arr[i] ? '<' : (arr[i-1] == arr[i] ? '=' : '>');
                if(t == '='){
                    preLen = 1;
                }else if(sign == t){
                    preLen = 2;
                }else{
                    preLen += 1;
                }
                max = Math.max(max, preLen);
                sign = t;
            }
            return max;
        }
    }
    
  • 相关阅读:
    c# 并行运算二
    c# 并行运算
    Task+http请求
    Task多线程
    SSO系统认证
    web系统权限设计
    AutoMapper的使用
    中间件
    express-middleware
    中间件概念
  • 原文地址:https://www.cnblogs.com/liuyongyu/p/14388430.html
Copyright © 2011-2022 走看看