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=0;
        for(int i=0;i<nums.size();i+=2) //Line 6: stray '\357' in program 原因是输入的分号存在中文字符! 数组长度用nums.size()得到
        {
            sum+=nums[i];
        }
        return sum;
    }
};

 

posted @ 2018-04-08 21:56  月夜_1  阅读(88)  评论(0编辑  收藏  举报