贪心
为了使得数对的最大值最小,我们肯定是想把每个数对的值尽量变小,则可以每次将最小的数和最大的数组成一起。
- 排序
- 双指针,最小的数和最大的数组成数对,取max
时间复杂度$O(NlogN)$,空间复杂度$O(1)$
AC代码
class Solution {
public:
int minPairSum(vector<int>& nums) {
sort(nums.begin(), nums.end());
int n = nums.size();
int res = INT_MIN;
int i = 0 , j = n - 1;
while (i < j) {
res = max(res, nums[i ++] + nums[j --]);
}
return res;
}
};