leetcode.561 Array Partition I

来源:互联网 发布:mysql count语句 编辑:程序博客网 时间:2024/06/06 10:39

Question


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: 4Explanation: n is 2, and the maximum sum of pairs is 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].

Solution

int compare( const void* a, const void* b){     int int_a = * ( (int*) a );     int int_b = * ( (int*) b );     if ( int_a == int_b ) return 0;     else if ( int_a < int_b ) return -1;     else return 1;}int arrayPairSum(int* nums, int numsSize) {    int sum = 0;    if (numsSize == 0) return 0;        qsort( nums, numsSize, sizeof(int), compare );        int i;    for (i = 0; i < numsSize; i+=2)        sum+=nums[i];    return sum;}