↓快轉到主要內容
  1. LeetCode/

LeetCode 1877: Minimize Maximum Pair Sum in Array

·1 分鐘· ·
LeetCode Medium Two-Pointers Greedy Sorting Array
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: medium 第一次嘗試:2026-01-24

  • 提交紀錄:Accepted(一次通過)

解題思路
#

貪心:最大的數一定要配最小的數。如果最大的數配了別人 x,把 x 換成最小的數,最大配對和不會變大(交換論證)。

排序後用對撞指針,nums[left] + nums[right] 就是每一組,答案是這些和的最大值。

我的解法
#

class Solution:
    def minPairSum(self, nums: List[int]) -> int:
        nums.sort()
        left, right = 0, len(nums) - 1
        best = 0
        while left < right:
            best = max(best, nums[left] + nums[right])
            left += 1
            right -= 1
        return best

複雜度
#

時間 O(n log n),空間 O(1)(不算排序)。

要特別避免的錯誤
#

  • 相鄰的兩個配在一起:最大的兩個會加在一起,配對和反而最大。

面試口說整理
#

最大的數不管配誰都會出現在某一組,配最小的才能讓這組最小,交換論證可以證明這樣不會更差。排序後最小配最大、往內收,取所有配對和的最大值。時間 O(n log n)。

相關文章

LeetCode 948: Bag of Tokens
·1 分鐘
LeetCode Medium Two-Pointers Greedy Sorting Array
LeetCode 948 解題筆記:排序後,用最小的 token 換分數、用最大的 token 換能量;只有分數 > 0 才能換能量,換不了就停
LeetCode 2410: Maximum Matching of Players With Trainers
·1 分鐘
LeetCode Medium Two-Pointers Greedy Sorting Array
LeetCode 2410 解題筆記:兩邊都排序後,用同向雙指針讓最弱的球員配最小的、夠用的教練
LeetCode 1838: Frequency of the Most Frequent Element
·1 分鐘
LeetCode Medium Sliding-Window Sorting Greedy Prefix-Sum Binary-Search Array
LeetCode 1838 解題筆記:排序後,把視窗裡的數都加到 nums[right] 的花費是 nums[right] × 長度 − 視窗總和;花費 > k 就縮左邊
LeetCode 2271: Maximum White Tiles Covered by a Carpet
·1 分鐘
LeetCode Medium Sliding-Window Greedy Sorting Prefix-Sum Binary-Search Array
LeetCode 2271 解題筆記:地毯的左端放在某段白磚的起點一定不會更差;排序後用雙指針,完整蓋住的段累加,最後一段只算部分
LeetCode 1498: Number of Subsequences That Satisfy the Given Sum Condition
·2 分鐘
LeetCode Medium Two-Pointers Sorting Binary-Search Array
LeetCode 1498 解題筆記:子序列只看最小值和最大值,排序後順序無關;固定最小值 nums[left],中間的元素任意選,共 2^(right - left) 種
LeetCode 923: 3Sum With Multiplicity
·3 分鐘
LeetCode Medium Two-Pointers Sorting Hash-Table Counting Array
LeetCode 923 解題筆記:排序後固定第一個數、對撞指針找另外兩個;兩端值相同時用組合數一次算完,不同時把兩端各自的重複數相乘