美文网首页
978. Longest Turbulent Subarray

978. Longest Turbulent Subarray

作者: morningstarwang | 来源:发表于2021-02-08 16:59 被阅读0次

    Ref: https://leetcode-cn.com/problems/longest-turbulent-subarray/

    这道题使用滑动窗口解决(leftright为左右边界指针),主要难点在边界条件。大致思路如下:

    • 如果arr[right - 1] > arr[right]arr[right] < arr[right + 1],则right += 1
    • 如果arr[right-1]<arr[right]arr[right]>arr[right+1],则right += 1
    • 除此之外,还需注意left=right的情况,在这种情况下,只需在arr[right]arr[right+1]相等时,left += 1,而始终要进行right += 1

    主要代码如下:

    class Solution:
        def maxTurbulenceSize(self, arr: List[int]) -> int:
            l = len(arr)
            if l == 0:
                return 0
            result = 1
            left = 0
            right = 0
            while right < l - 1:
                if left == right:
                    if arr[right] == arr[right + 1]:
                        left += 1
                    right += 1
                else:
                    if arr[right - 1] > arr[right] and arr[right] < arr[right + 1]:
                        right += 1
                    elif arr[right - 1] < arr[right] and arr[right] > arr[right + 1]:
                        right += 1
                    else:
                        left = right
                result = max(result, right - left + 1)
                
            return result
    

    相关文章

      网友评论

          本文标题:978. Longest Turbulent Subarray

          本文链接:https://www.haomeiwen.com/subject/bjcfxltx.html