大疆机器学习笔试算法题

给定一个数组a[0...n-1],求a[j]-a[i]+a[q]-a[p]的最大值,其中i<j<p<q

#一个数组a[0...n-1],求a[j]-a[i]+a[q]-a[p]的最大值,其中i<j<p<q
#算法解析:借鉴a[j]-a[i]的最大值,先把数组分为两段,每一段按单独算法执行,也就是先把该段
#前面一截的最小值找出,后面一截的最大值找出。然后算出最大值,同理算出第二段最大值,相加得赋值为
#max,如果更大则替换。
def getmax(array):
    arrlen=len(array)-1
    arraymax = [-100000]    #这里赋初值时要尽可能的小,以防max-min是小于0的一些数而导致没记录。
    for i in range(1,arrlen+1):
        prearray=array[:i]
        endarray=array[i:]
        prelen=len(prearray)
        endlen=len(endarray)
        #每次重新循环时都会被初始化,必须在for循环外部加一个存储空间,防止最大值被初始化。
        min = prearray[0]
        max = endarray[0]
        if max-min>arraymax[0]:
            arraymax[0]=max-min
        for i in range(prelen):
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值