Leetcode 978. Longest Turbulent Subarray

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/M_sdn/article/details/86560793

A subarray A[i], A[i+1], ..., A[j] of A is said to be turbulent if and only if:

  • For i <= k < jA[k] > A[k+1] when k is odd, and A[k] < A[k+1] when k is even;
  • OR, for i <= k < jA[k] > A[k+1] when k is even, and A[k] < A[k+1] when k is odd.

That is, the subarray is turbulent if the comparison sign flips between each adjacent pair of elements in the subarray.

Return the length of a maximum size turbulent subarray of A.

Example 1:

Input: [9,4,2,10,7,8,8,1,9]
Output: 5
Explanation: (A[1] > A[2] < A[3] > A[4] < A[5])

Example 2:

Input: [4,8,12,16]
Output: 2

Example 3:

Input: [100]
Output: 1

Note:

  1. 1 <= A.length <= 40000
  2. 0 <= A[i] <= 10^9
public int maxTurbulenceSize(int[] A) {
        if (A.length == 1) return 1;
        int max = 1;
        for (int i = 0; i < A.length; i++) {
            int count = 1;
            for (int j = i; j < A.length-2; j++) {
                if ((A[j] == A[j+1] || A[j+1] == A[j+2]) || (A[j + 1] > A[j] && A[j + 2] > A[j + 1]) || (A[j + 1] < A[j] && A[j + 2] < A[j + 1])) {
                    break;
                } else {
                    count++;
                }
            }
            max = Math.max(max, ++count);
        }
        return max;
    }

 https://leetcode.com/contest/weekly-contest-120/problems/longest-turbulent-subarray/

猜你喜欢

转载自blog.csdn.net/M_sdn/article/details/86560793
今日推荐