LeetCode#561 Array Partition I

2017-08-26
程式解題/ LeetCode

問題

給一個長度為 2n 的整數陣列,將陣列的值兩兩配對,使得所有 min(ai, bi) 的和愈大愈好 (0 <= i <= n) 。

輸入

[1,4,3,2]

輸出

4

方法

這題直覺就是先將陣列排序之後再取奇數項相加就好。

sort: [1,2,3,4]
min(1, 2) + min(3, 4) = 4
1
2
3
4
5
6
7
class Solution(object):
def arrayPairSum(self, nums):
summation = 0
for i, v in enumerate(sorted(nums)):
if i % 2 == 0:
summation += v
return summation

在底下討論版找到了一行解決的 code ,完全體現 python 簡約的風格,太神啦!

1
2
3
class Solution(object):
def arrayPairSum(self, nums):
return sum(sorted(nums)[::2])