乍一看这题,心都凉了一半。。。结果发现,这题所有的难度应该都点在阅读理解上了
返回该 最大总和 。
示例 1:
输入:nums = [1,4,3,2]
输出:4
解释:所有可能的分法(忽略元素顺序)为:
输入:nums = [6,2,6,5,1,2]
输出:9
解释:最优的分法为 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2 + 6 = 9
提示:
1 <= n <= 104
nums.length == 2 * n
-104 <= nums[i] <= 104
思路:这道题有点田忌赛马的影子,这道题的关键就是谁与谁组队相比较的问题,
由于求最大的值,所以我们要尽可能的保留大的值,
假如按照最大+最小,第二大+第二小,就会直接把最大和第二大的数舍去了,
如果最大与第二大组队就可以保留第二大的数字,
以此类推,我们只需要排序之后,相邻之间组队就可以留下最大的值
其实就是把从a1到an数组下标为奇数的数都加起来
class Solution {
public static int arrayPairSum(int[] nums) {
int sum=0;
Arrays.sort(nums);
for(int i=0;i< nums.length;i=i+2){
sum=sum+nums[i];
}
return sum;
}
}