题目:给定长度为2n的数组,你的任务是将这些数分成n对,例如
,使得从1到n的
总和最大。
示例1:
输入:[1,4,3,2]
输出:4
解释:n等于2,最大总和为 4 = min(1,2) + min(3,4)
思路:数组长度为2n,因为数组中的最大值肯定取不到,又要使
的和最大,所以第二大的数我们肯定要取到,利用这种思路,将数组排序后,将偶数的索引元素汇总即是1到n的
总和最大。击败了88.82%的用户。
class Solution: def arrayPairSum(self, nums): """ :type nums: List[int] :rtype: int """ nums = sorted(nums) result,i = 0,0 while i < len(nums): result += nums[i] i += 2 return result
大佬代码:
class Solution:
def arrayPairSum(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
return sum(sorted(nums)[::2])