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

LeetCode 561: Array Partition

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

基本資料
#

難易度: easy 第一次嘗試:2022-08-27

  • 提交紀錄:Accepted ×3 → Internal Error → Accepted ×3

解題思路
#

每組貢獻比較小的那個,所以比較大的數要盡量跟另一個大的數一組,才不會浪費(Greedy 模板一)。排序後相鄰兩兩配對,答案是 sorted(nums)[::2] 的總和。值的範圍小(-10^4..10^4),也可以用計數排序。

我的嘗試
#

第一次就 AC 了,同樣的程式碼後來再交一次遇到 LeetCode 的 Internal Error。

正確解法
#

class Solution:
    def arrayPairSum(self, nums: List[int]) -> int:
        return sum(sorted(nums)[::2])

複雜度
#

時間 O(n log n),空間 O(n)。

要特別避免的錯誤
#

  • 取的是排序後偶數 index 的元素。

面試口說整理
#

每組只貢獻比較小的那個,所以大的數要跟大的數一組才不浪費。我排序後相鄰兩兩一組,加總每組的第一個,也就是偶數位置的數。時間 O(n log n)。

相關文章

LeetCode 455: Assign Cookies
·1 分鐘
LeetCode Easy Array Two-Pointers Greedy Sorting
LeetCode 455 解題筆記:小孩和餅乾都排序,用最小的、夠大的餅乾滿足最小的小孩;兩個指標各走一次
LeetCode 414: Third Maximum Number
·1 分鐘
LeetCode Easy Array Sorting
LeetCode 414 解題筆記:記錄三個不同的最大值,重複的數跳過;不到三個不同的數就回傳最大值
LeetCode 217: Contains Duplicate
·1 分鐘
LeetCode Easy Array Hash-Table Sorting
LeetCode 217 解題筆記:轉成 set 後長度變短就代表有重複
LeetCode 169: Majority Element
·1 分鐘
LeetCode Easy Array Hash-Table Divide-and-Conquer Sorting
LeetCode 169 解題筆記:Boyer-Moore 投票,不同的數兩兩抵消,最後留下的就是出現超過一半的那個
LeetCode 506: Relative Ranks
·1 分鐘
LeetCode Easy Array Sorting Heap-Priority-Queue
LeetCode 506 解題筆記:把 index 按分數由高到低排序,前三名給獎牌,其他給名次的字串,放回原本的位置
LeetCode 566: Reshape the Matrix
·1 分鐘
LeetCode Easy Array Matrix Simulation
LeetCode 566 解題筆記:元素總數不同就回傳原矩陣;否則第 k 個元素放到 (k // c, k % c)