大疆机器学习笔试算法题

给定一个数组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):
            if array[i]<min:
                min=array[i]
        for i in range(endlen):
            if array[i]>max:
                max=array[i]
    return arraymax[0]
if __name__ == '__main__':
    array=[1,2,3,9,6,4,2,1]
    slen=len(array)-2
    max1 = 0
    max2 = 0
    totalmax = max1 + max2
    for i in range(2,slen+1):
        array1=array[0:i]
        array2=array[i:]
        max1=getmax(array1)
        max2=getmax(array2)
        totalmax = max1+max2
        if max1+max2>totalmax:
            totalmax=max1+max2
    print(totalmax)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
机器学习(Machine Learning, ML)是一种应用人工智能(AI)领域的科学技术,它使得计算机系统能够从数据中自动学习和改进,而无需显式编程。在机器学习的过程中,算法会通过识别和挖掘数据中的模式来构建一个模型,这个模型可以用于做出预测、分类、聚类、回归以及其他复杂的数据驱动决策。 机器学习的主要类型包括监督学习、无监督学习和半监督学习。在监督学习中,算法根据已知标签的数据集进行训练,以便对未知数据进行预测,例如分类任务(判断邮件是否为垃圾邮件)或回归任务(预测房价)。无监督学习则是在没有标签的情况下,仅凭数据本身的特征发现其中隐藏的结构或模式,如聚类分析(将用户分组到不同的客户细分群体中)。半监督学习介于两者之间,它部分数据有标签,部分数据无标签。 机器学习算法涵盖众多方法,包括但不限于逻辑回归、决策树、随机森林、支持向量机、K近邻算法、神经网络以及深度学习技术等。随着计算能力的增强和大数据时代的到来,机器学习已经在诸多领域展现出强大的功能,如图像识别、语音识别、自然语言处理、推荐系统、金融风控、医疗诊断等。 此外,机器学习的发展与统计学习、逼近论、凸优化、概率论等诸多数学和计算机科学领域紧密相关,且不断地推动着新算法和理论框架的创新与发展。同时,现代机器学习尤其是深度学习模型的内部工作机制有时难以完全解释,因此常被称为“黑箱”决策过程,这也是当前研究中的一个重要挑战。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值