561. Array Partition I

来源:互联网 发布:网络教育官网 编辑:程序博客网 时间:2024/06/05 06:58

Given an array of 2n integers, your task is to group these integers inton pairs of integer, say (a1, b1), (a2, b2), ..., (an, bn) which makes sum of min(ai, bi) for all i from 1 to n as large as possible.

Example 1:

Input: [1,4,3,2]Output: 4Explanation: n is 2, and the maximum sum of pairs is 4 = min(1, 2) + min(3, 4).

Note:

  1. n is a positive integer, which is in the range of [1, 10000].
  2. All the integers in the array will be in the range of [-10000, 10000].

Subscribe to see which companies asked this question.


给一个2n大小的序列,也就是有n对数,取出每对数中的最小值求和,问最大值是多少。想法是对于一个小的数,要拿一个刚好比他大的数和他组队,不然就浪费一个较大的数。所以实现是先排序,然后每隔一个数取一个数相加得到结果。


代码:

class Solution {public:int arrayPairSum(vector<int>& nums) {int res = 0;sort(nums.begin(), nums.end());for(int i = 0; i < nums.size(); i+=2){res += nums[i];}return res;}};


原创粉丝点击