首页 > 试题广场 >

两两配对差值最小

[编程题]两两配对差值最小
  • 热度指数:7975 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个长度为偶数的数组arr,将该数组中的数字两两配对并求和,在这些和中选出最大和最小值,请问该如何两两配对,才能让最大值和最小值的差值最小?

输入描述:
一共2行输入。
第一行为一个整数n,2<=n<=10000, 第二行为n个数,,组成arr数组,0<=arr[i]<=100。


输出描述:
输出最小的差值。
示例1

输入

4
2 6 4 3

输出

1
示例2

输入

6
11 4 3 5 7 1

输出

3
Python3行搞定  排序之后最大最小的配对 然后次大的和次小的配对  以此类推、
_, a = input(), sorted([int(x) for x in input().split(" ")])
b = [a[i] + a[-i-1] for i in range(int(len(a)/2))]
print(max(b) - min(b))


发表于 2019-12-05 11:27:14 回复(0)
n = int(input())
mid = n >> 1
arr = list(map(int, input().strip().split()))
arr.sort()
small = 200
big = 0
for i in range(mid):
    temp = arr[i] + arr[-(i+1)]
    if temp < small:
        small = temp
    if temp > big:
        big = temp
print(big - small)

发表于 2019-09-06 14:57:06 回复(0)
import sys
n=int(sys.stdin.readline().strip())
arr=list(map(int,sys.stdin.readline().strip().split()))
arr.sort()
plus=[]
for i in range(n//2):
    plus.append(arr[i]+arr[n-1-i])
print(max(plus)-min(plus))

发表于 2019-08-06 14:22:11 回复(0)