题目描述
给定长度为 2n 的整数数组nums,将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该最大总和 。
python实例展示
思路:排序
假设每一对表示为(an, bn) ,且an<=bn,我们要求的是
也就是所有a的和。因此这道题目的关键是在于如何将数组进行分对,以尽可能把较大的数值保留下来。从上述公式可知,最大的值一定在b集合中,但我们应把第二大的值保留在a集合中,以此类推。所以我们可以将数组由小到大进行排序,元素依次归位a、b集合,我们只需将从第一个元素起,所有的元素加起来,就是最后要返回的结果。
往期推荐: