其他分享
首页 > 其他分享> > 【数组】561. 数组拆分 I

【数组】561. 数组拆分 I

作者:互联网

题目:

 

 

 

解答:

方法一:暴力破解,找出所有的两个元素的排列。

方法二:排序。

为了理解这种方法,让我们从不同的角度来看待问题。我们需要形成数组元​​素的配对,使得这种配对中最小的总和最大。因此,我们可以查看选择配对中最小值的操作,比如 (a,b)(a,b) 可能会产生的最大损失 a-ba−b (如果 a > ba>b)。

如果这类配对产生的总损失最小化,那么总金额现在将达到最大值。只有当为配对选择的数字比数组的其他元素更接近彼此时,才有可能将每个配对中的损失最小化。

考虑到这一点,我们可以对给定数组的元素进行排序,并直接按排序顺序形成元素的配对。这将导致元素的配对,它们之间的差异最小,从而导致所需总和的最大化。

 1 class Solution {
 2 public:
 3     int arrayPairSum(vector<int>& nums) 
 4     {
 5         sort(nums.begin(), nums.end());
 6 
 7         int sum = 0;
 8         for (int i = 0; i < nums.size(); i += 2)
 9          {
10             sum += nums[i];
11         }
12         return sum;
13     }
14 };

 

标签:数组,nums,int,561,sum,元素,拆分,配对
来源: https://www.cnblogs.com/ocpc/p/12827418.html