問題描述:
給定乙個長度為偶數的陣列arr,將該陣列中的數字兩兩配對並求和,在這些和中選出最大和最小值,請問該如何兩兩配對,才能讓最大值和最小值的差值最小?輸入描述:
一共2行輸入。 第一行為乙個整數n,2<=n<=10000, 第二行為n個數,組成目標陣列,每個數大於等於2,小於等於100。輸出描述:
輸出最小的差值。示例輸入:
426
43611
4357
1
示例輸出:
1
3
思路:
這題萬級資料限制1s,如果是窮舉的話肯定行不通,得想乙個好點的演算法策略。ac**:我們認為當前最大值和當前最小值進行的配對差值應當是比較小的。所以我們可以根據這個演算法策略來貪心的進行配對,記錄最大值和最小值,返回其差值即可。
def
solution()
: n =
int(
input()
) data =
list
(map
(int
,input()
.split())
) maxs =
0 mins =
200while n:
cur_max =
max(data)
cur_min =
min(data)
cur_data = cur_max+cur_min
if cur_data > maxs:
maxs = cur_data
if cur_data < mins:
mins = cur_data
data.remove(cur_max)
data.remove(cur_min)
n -=
2print
(maxs-mins)
solution(
)
牛客 2019拼多多 兩兩配對差值最小
題目描述 給定乙個長度為偶數的陣列arr,將該陣列中的數字兩兩配對並求和,在這些和中選出最大和最小值,請問該如何兩兩配對,才能讓最大值和最小值的差值最小?輸入描述 一共2行輸入。第一行為乙個整數n,2 n 10000,第二行為n個數,組成目標陣列,每個數大於等於2,小於等於100。輸出描述 輸出最小...
牛客網刷題4 兩兩配對差值最小
題目鏈結 題目描述 給定乙個長度為偶數的陣列arr,將該陣列中的數字兩兩配對並求和,在這些和中選出最大和最小值,請問該如何兩兩配對,才能讓最大值和最小值的差值最小?輸入描述 一共2行輸入。第一行為乙個整數n,2 n 10000,第二行為n個數,組成目標陣列,每個數大於等於2,小於等於100。輸出描述...
冒泡演算法(兩兩比較,最小上冒)
假設排序陣列a n 按從小到大排列 int a int length a.length 準備好交換方法 private void swap int j,int i 排序好後列印 for int k 0 k length k 1.冒泡演算法 兩兩比較,把小的往左移 a n 和 a n 1 比較,如果a...