Array Partition I

本文介绍了一个简单的算法问题——ArrayPartitionI,任务是将数组中的整数配对以使每对最小值之和最大化。文章提供了C++实现代码,通过排序数组元素并选择每对中的较小值来求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.

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:
n is a positive integer, which is in the range of [1, 10000].
All the integers in the array will be in the range of [-10000, 10000].
总体思路:对向量中元素排序并输出每两个中的较小值的和

#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
    int arrayPairSum(vector<int>& nums) {
        int k,i,temp,s=0;
        for (k = 0; k<nums.size(); k++)
            for (i = k; i<nums.size(); i++)
                if (nums[i]<nums[k]) //这里改为>,即可实现从大到小排列
                {
                    temp = nums[i];
                    nums[i] = nums[k];
                    nums[k] = temp;
                }
        for (size_t i = 0; i < nums.size(); i = i + 2)
        {
            s = s + nums[i];
        }
        cout << s << endl;
        return s;
    }
};
int main()
{
    Solution n;
    vector<int> s ;//向量元素的输入都要依次输入,后续可以改变
    s.push_back(1);
    s.push_back(4);
    s.push_back(3);
    s.push_back(2);
    s.push_back(5);
    s.push_back(6);

    n.arrayPairSum(s);
}

总结:
题目比较简单,复习排序算法以及vector的使用、思路想法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值