腾讯2019年暑期实习生招聘提前批在线笔试技术研究和数据分析方向(python)

在一场比赛中有n个检查点,比赛要求到达n-1个检查点即可,
这些检查点排列在x轴上,位置分别为x1,x2,…,xn,
且允许以任意顺序访问检查点。比赛的开始位置为a,
求完成比赛所经过的最小距离。
【输入描述:】
输入包含两行
第一行为两个参数n,a,其中1 <= n <= 100000, -1000000 <= a <= 1000000
第二行为n个整数:x1,x2,…,xn(-1000000 <= xn <= 1000000)
【输出描述:】
输出一个整数
输入:
3 10
1 7 12
输出:
7

def minDistance(l, xn):#构造输入行函数
    n, a = l[0], l[1]#两个参数n,a
    M = xn #第二行为n个整数
    M_sorted = sorted(M)#在x轴上排列
    if a<M_sorted[0]:#以下进行数学中的分类讨论
        return M_sorted[-2]-a
    elif a>M_sorted[-1]:
        return a-M_sorted[1]
    else:
        s1=a-M_sorted[0]
        s2=M_sorted[-1]-a
        if s1>s2:
            return min(s2,a-M_sorted[1])+M_sorted[-1]-M_sorted[1]
        else:
            return min(s1, M_sorted[-2]-a) + M_sorted[-2] - M_sorted[0]

  

原文地址:https://www.cnblogs.com/277223178dudu/p/10665424.html