Python程序员面试算法宝典---解题总结: 第4章 数组 4.8 如何求解最小三元组距离

本文是针对Python程序员面试的算法解析,聚焦于数组问题,详细介绍了如何找出数组中最小三元组的距离。通过实例和步骤解析,帮助读者掌握这一关键算法技巧。
摘要由CSDN通过智能技术生成
# -*- coding: utf-8 -*-

'''
Python程序员面试算法宝典---解题总结: 第4章 数组 4.8 如何求解最小三元组距离

题目:
已知三个升序整数数组a[l], b[m]和c[n],请在三个数组中各找出一个元素,使得
组成的三元组距离最小,三元组距离的定义是: 假设a[i]、b[j]和c[k]
是一个三元组,那么距离为: Distance=max(|a[i] - b[j]|,|a[i] - c[k]|,|b[j] - c[k]|),
请设计一个求最小三元组距离的最优算法。

分析:
问题的关键是何时才去计算Distance。
如果暴力破解,则采用三层遍历,可以求解出。
假设f[i][j]表示以a[i], b[j]计算出来的最小三元组距离,那么有如下公式:
f[i][j] = min(f[i][j], max(|a[i] - b[j]|,|a[i] - c[k]|,|b[j] - c[k]|) ) , k从1到n

关键:
1 书上解法
第一次从三个数组中各取出第一个元素,计算Distance,
然后从三个元素中选取最小元素所在的数组,将该数组向后遍历一次,
得到一个新的元素,再计算新的Distance,
此时如果新计算的Distance比原来记录的最小值小就更新最小值;
直到某个数组遍历完成,就退出。

2 我之所以没有想到
是因为没有考虑到在何时需要计算Distance,现在来看就是
每次取3个元素中最小元素所在数组向后遍历一次就去计算。

参考:
Python程序员面试算法宝典
'''

def getTripeMinDistance(aArray, bArray, cArray):
    if not (aArray and bArray and cArray):
        return
    aLen = len(aArray)
    bLen = len(bArray)
    cL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值