首页 > 试题广场 >

金字塔数组

[编程题]金字塔数组
  • 热度指数:1232 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为n的数组num,数组开始时呈现递增趋势的,到了某一点之后,数组中的值呈现递减趋势,符合这样先增后减规律的数组定义为金字塔数组,求整个num数组中找出长度最长的金字塔数组,如果金字塔数组不存在,请输出0

示例1

输入

4,[1,2,3,1]

输出

4
示例2

输入

5,[1,5,3,3,1]

输出

3

备注:
1<=n<=1000000,且num数组中的数 0<=num[i]<=1000000。
不多说,直接上代码,看注释 ,哈哈
class Solution:
    def getMaxLength(self , n , num ):
        if len(num)<1:
            return 0
        #储存波谷点的数组
        res=[]
        # 寻找所有的波谷点
        if(num[1]>=num[0]):
            res.append(0)
            
        for i in range(1,n-1):
            if num[i-1]>=num[i] and num[i]<=num[i+1]:
                res.append(i)
                
        if num[n-2]>=num[n-1]:
            res.append(n-1)
        # 将相邻两个波谷点的最大值结果保存在result中
        result=0
        for i in range(1,len(res)):
            result=max(result,res[i]-res[i-1]+1)
            
        return result

发表于 2020-08-04 23:11:17 回复(0)

问题信息

难度:
1条回答 2781浏览

热门推荐

通过挑战的用户

查看代码