牛客網刷題4 兩兩配對差值最小

2021-10-02 13:01:39 字數 1080 閱讀 7631

題目鏈結

題目描述

給定乙個長度為偶數的陣列arr,將該陣列中的數字兩兩配對並求和,在這些和中選出最大和最小值,請問該如何兩兩配對,才能讓最大值和最小值的差值最小?

輸入描述

一共2行輸入。

第一行為乙個整數n,2<=n<=10000, 第二行為n個數,組成目標陣列,每個數大於等於2,小於等於100。

輸出描述

輸出最小的差值。

示例1輸入4

2 6 4 3輸出1

示例2輸入6

11 4 3 5 7 1輸出3

題目分析

此題輸入是多行輸入,所以不用我一直練的js語言。

考慮到我熟悉的c語言沒有sort庫函式,所以使用c++語言完成此題。

兩兩配對後,最大值和最小值的差值最小,就說明兩兩配對的時候就應該選擇最小值和最大值配對,第二小值和第二大值配對……

因此,首先將輸入的陣列使用sort函式排序。

將排序後的陣列兩兩配對,配對方法:兩個值的下標相加為n-1,即:sum[i] = arr[i]+arr[n-1-i];

將兩兩配對後的新陣列使用sort函式排序。

排序後的陣列中,第乙個數值就是最小值,最後乙個數值就是最大值。

#include

#include

using

namespace std;

intmain()

sort

(arr,arr+n)

;int sum[

100]

;for

(int i=

0;i)sort

(sum,sum+n/2)

;int res;

res = sum[n/2-

1]-sum[0]

;printf

("%d"

,res)

;return0;

}

牛客 2019拼多多 兩兩配對差值最小

題目描述 給定乙個長度為偶數的陣列arr,將該陣列中的數字兩兩配對並求和,在這些和中選出最大和最小值,請問該如何兩兩配對,才能讓最大值和最小值的差值最小?輸入描述 一共2行輸入。第一行為乙個整數n,2 n 10000,第二行為n個數,組成目標陣列,每個數大於等於2,小於等於100。輸出描述 輸出最小...

015拼多多 兩兩配對差值最小

問題描述 給定乙個長度為偶數的陣列arr,將該陣列中的數字兩兩配對並求和,在這些和中選出最大和最小值,請問該如何兩兩配對,才能讓最大值和最小值的差值最小?輸入描述 一共2行輸入。第一行為乙個整數n,2 n 10000,第二行為n個數,組成目標陣列,每個數大於等於2,小於等於100。輸出描述 輸出最小...

牛客網刷題 兩數之和

給出乙個整數陣列,請在陣列中找出兩個加起來等於目標值的數,你給出的函式twosum 需要返回這兩個數字的下標 index1,index2 需要滿足 index1 小於index2.注意 下標是從1開始的 假設給出的陣列中只存在唯一解 例如 給出的陣列為 目標值為90 輸出 index1 1,inde...