最长湍流子数组——动态规划

发布时间:2026/6/10 13:12:17
最长湍流子数组——动态规划
给定一个整数数组arr返回arr的最大湍流子数组的长度。如果比较符号在子数组中的每个相邻元素对之间翻转则该子数组是湍流子数组。更正式地来说当arr的子数组A[i], A[i1], ..., A[j]满足仅满足下列条件时我们称其为湍流子数组若i k j当k为奇数时A[k] A[k1]且当k为偶数时A[k] A[k1]或若i k j当k为偶数时A[k] A[k1]且当k为奇数时A[k] A[k1]。示例 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思路dp[i][0] 为以 arr[i] 结尾且 arr[i−1]arr[i] 的「湍流子数组」的最大长度dp[i][1] 为以 arr[i] 结尾且 arr[i−1]arr[i] 的「湍流子数组」的最大长度。class Solution: def maxTurbulenceSize(self, arr: List[int]) - int: nlen(arr) dp[[1,1] for _ in range(n)] for i in range(1,n): if arr[i-1]arr[i]: continue elif arr[i]arr[i-1]: dp[i][1]dp[i-1][0]1 else: dp[i][0]dp[i-1][1]1 return max(max(row) for row in dp)