leetcode 561.Array Partition I-easy


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.

Example 1:

Input: [1,4,3,2]

Output: 4
Explanation: 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]

按照题意,实际上应该是数组元素的排序问题。排序完成后,从第一个元素隔一个求和。

注意:

1. vector 类模板提供了一对操作begin()和end() 它们分别返回指向向量开始处和结束处后1 个的迭代器。这一对迭代器合起来可以标记出待遍历元素的范围。

2.关于sort() 的用法 参考:https://blog.csdn.net/sunshangjin/article/details/40296357

class Solution {
public:
int arrayPairSum(vector<int>& nums) {
sort(nums.begin(),nums.end()); //nums.begin()代表数组的起始地址;nums.end()代表数组的结束地址; sort(s1,s2)对s1到s2位置之间的数组元素进行排序,默认从小到大。
int sum=;
for(int i=;i<nums.size();i+=) //Line 6: stray '\357' in program 原因是输入的分号存在中文字符! 数组长度用nums.size()得到
{
sum+=nums[i];
}
return sum;
}
};
上一篇:612.1.002 ALGS4 | Analysis of Algorithms


下一篇:[LeetCode] 561. Array Partition I_Easy tag: Sort