LeetCode solutions

1020. Longest Turbulent Subarray

My accepted Python solution to LeetCode problem 1020, Longest Turbulent Subarray, running in 52ms.

  • Difficulty: Medium
  • Python
  • Runtime 52ms
  • Memory 19.8MB

Read the problem on LeetCode View on GitHub

Python

Accepted on LeetCode — runtime 52ms, memory 19.8MB, accepted 2026-01-02.

python
class Solution:
    def maxTurbulenceSize(self, arr: List[int]) -> int:
        n = len(arr)
        if n == 1:
            return 1
        
        # inc[i] = length of turbulent ending at i where arr[i-1] < arr[i]
        # dec[i] = length of turbulent ending at i where arr[i-1] > arr[i]
        inc = dec = 1
        max_len = 1
        
        for i in range(1, n):
            if arr[i] > arr[i-1]:
                inc = dec + 1
                dec = 1
            elif arr[i] < arr[i-1]:
                dec = inc + 1
                inc = 1
            else:
                inc = dec = 1
            
            max_len = max(max_len, inc, dec)
        
        return max_len

Source