561. 数组拆分

一、题目

给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。

返回该 最大总和 。

二、代码

class Solution {
public:
    int arrayPairSum(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        int ans = 0;
        for (int i = 0; i < nums.size(); i += 2) {
            ans += nums[i];
        }
        return ans;
    }
};

三、分析

复杂度分析

时间复杂度:O(nlog⁡n),即为对数组 nums 进行排序的时间复杂度。

空间复杂度:O(log⁡n),即为排序需要使用的栈空间。

posted @ 2023-01-02 19:21  ImreW  阅读(19)  评论(0)    收藏  举报