腾讯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]