先上题目
思路:要使和最大,应当让每个组Max-Min(两数之差)最小。递增序列可以实现
1.将数组递增排序
2.将2n的数组分为n组
3.计算最大和
代码部分(C语言 )
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int arrayPairSum(int* nums, int numsSize) {
int i,j,temp,len,result=0;
qsort(nums,numsSize,sizeof(nums[0]),cmp);
for(i=0;i<numsSize;i=i+2){
result+=nums[i];
}
return result;
}
代码部分二(Java )
class Solution {
public int arrayPairSum(int[] nums) {
int i,j,temp,len,result=0;
len=nums.length;
Arrays.sort(nums);
for(i=0;i<len;i=i+2){
result+=nums[i];
}
return result;
}
}