美文网首页
数组中的最长山脉

数组中的最长山脉

作者: Haward_ | 来源:发表于2019-04-08 21:24 被阅读0次

我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”:

B.length >= 3
存在 0 < i < B.length - 1 使得 B[0] < B[1] < ... B[i-1] < B[i] > B[i+1] > ... > B[B.length - 1]
(注意:B 可以是 A 的任意子数组,包括整个数组 A。)

给出一个整数数组 A,返回最长 “山脉” 的长度。

如果不含有 “山脉” 则返回 0。

示例 1:

输入:[2,1,4,7,3,2,5]
输出:5
解释:最长的 “山脉” 是 [1,4,7,3,2],长度为 5。
示例 2:

输入:[2,2,2]
输出:0
解释:不含 “山脉”。

思想:中心法

class Solution:
    def longestMountain(self, A):
        if len(A)<3:
            return 0
        res = 0
        for k in range(1,len(A)-1):
            if A[k] > A[k-1] and A[k] > A[k+1]:
                i,j = k-1,k+1
                while i-1>=0 and A[i]>A[i-1]:
                    i-=1
                while j+1<=len(A)-1 and A[j]>A[j+1]:
                    j+=1
                res = max(res,j-i+1)
        return res
        

相关文章

网友评论

      本文标题:数组中的最长山脉

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