***、题目链接
Day3:Leetcod 1877. 数组中最大数对和的最小值
一、题目
1、题目描述
一个数对 (a,b) 的 数对和 等于 a + b 。最大数对和 是一个数对数组中最大的 数对和 。
- 比方说,如果我们有数对 (1,5) ,(2,3) 和 (4,4),最大数对和 为 max(1+5, 2+3, 4+4) = max(6, 5, 8) = 8 。
给你一个长度为 偶数 n 的数组 nums ,请你将 nums 中的元素分成 n / 2 个数对,使得:
- nums 中每个元素 恰好 在 一个 数对中,且
最大数对和 的值 最小 。- 请你在最优数对划分的方案下,返回最小的 最大数对和
样例输入:[3,5,2,3]
;
样例输出:7
。
2、基础框架
- C++给出的代码框架如下:
class Solution {
public:
int minPairSum(vector<int>& nums) {
}
};
二、解题报告
1、思路分析
(
1
)
(1)
(1) 排序;
(
2
)
(2)
(2) 最大加最小,次打加次小,依次类推。
2、时间复杂度
O ( n ) O(n) O(n) , n n n 为字符串长度。
3、代码详解
class Solution {
public:
int minPairSum(vector<int>& nums) {
int n = nums.size();
sort(nums.begin(), nums.end());
int temp = -1;
for(int i = 0; i <= n / 2; i ++){
temp = max(temp, nums[i] + nums[n - 1 - i]);
}
return temp;
}
};
三、写在最后
还是双指针,🙃。