首页 > 编程语言 > 详细

leetcode 561. 数组拆分 I

时间:2019-11-16 16:51:54      阅读:117      评论:0      收藏:0      [点我收藏+]

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

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

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

class Solution {
public:
    int arrayPairSum(vector<int>& nums) {
        int sum=0;
        sort(nums.begin(),nums.end());
        for(auto it=nums.begin();it<nums.end();it+=2)
        {
            sum+=(*it);
        }
    return sum;
    }
};

 

leetcode 561. 数组拆分 I

原文:https://www.cnblogs.com/renzmin/p/11871940.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!