link: https://leetcode.com/problems/array-partition-i/
Solution:
Sort以后取偶数位数字之和
Sort以后取相邻会使得min(a, b)之和最小的原因是:
假设a > b,则对于最后的结果,取(a, b)造成的损失是a-b
要使得损失最小,则a和b要离得最近,即相邻
class Solution {
public int arrayPairSum(int[] nums) {
int len = nums.length;
if (len == 2) return Math.min(nums[0], nums[1]);
Arrays.sort(nums);
int res = 0;
for(int i=0; i<len; i++) {
if(i % 2 == 0) {
res += nums[i];
}
}
return res;
}
}
TC: O(nlogn)
SC: O(1)