您的位置:首页 > 编程语言 > Python开发

python--leetcode561. Array Partition I

2017-09-22 17:12 519 查看
Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1,
b1), (a2, b2),
..., (an, bn) which makes sum of min(ai,
bi) for all i from 1 to n as large as possible.

Example 1:

Input: [1,4,3,2]

Output: 4
Explanation: n is 2, and the maximum sum of pairs is 4 = min(1, 2) + min(3, 4).


Note:

n is a positive integer, which is in the range of [1, 10000].
All the integers in the array will be in the range of [-10000, 10000].
这题的意思大概就是给2n个数字,按照(a1,b1)的方式组成n个序列,然后把所有min(ai,bi)加起来得合sum,求sum的最大值。

上代码:

class Solution(object):
def arrayPairSum(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()
sum=0
for i in range(len(nums)):
if(i%2==0): sum=sum+nums[i]
return sum思路很简单,给list排个序,所有下标为偶数的元素加起来就为所求。
设想给定情况为[1,2,4,3]四个元素,组合成[1,2]、[3,4]这样所求sum值最大。

当然还有更简单的一行代码:

class Solution(object):

def arrayPairSum(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
return sum(sorted(nums)[::2])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: