本文主要是介绍Array Partition I问题及解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
Given an array of 2n integers, your task is to group these integers into n 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.
示例:
Input: [1,4,3,2]Output: 4 Explanation: n is 2, and the maximum sum of pairs is 4.问题分析:
由题意可知,我们可以将整个数组升序排序,每两个数为一组,取其最小的那个值相加,最终得到答案。
过程详见代码:
class Solution {
public:int arrayPairSum(vector<int>& nums) {sort(nums.begin(),nums.end());int res = 0;for(int i = 0 ; i < nums.size(); i += 2){res += nums[i];}return res;}
};
这篇关于Array Partition I问题及解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!