力扣(leetcode) 1877. 数组中最大数对和的最小值 (排序后头尾组合)

题目在这:https://leetcode-cn.com/problems/minimize-maximum-pair-sum-in-array/

思路分析:

题目意思就是,找所有数对和的最大值,而数对和尽量都是最小的。

举个例子 S = [3,5,2,3] 当(3,3)和(2,5)结合时最大为7。其他情况组合包含(3,5) 则将出现更大的数 8。
所以要避免出现大的值,一定是最大的数和最小的数组合。次大的和次小的组合。
可以不断的使用max和min函数,不过那样会超时。

我们可以将数组排序。第一个数和最后一个数进行结合,操作到中间即可。

完整代码:

 		nums.sort()
        res = 1
        n = len(nums) // 2
        print(nums)
        for i in range(n+1):
            res = max(res,nums[i] + nums[-i - 1])

        return res

这里唯一要注意的点就是,数组的开头索引为0,而最后一位数的索引为-1。调整好这里即可。

你可能感兴趣的:(交流学习,个人笔记,python,leetcode)