LeetCode刷题DAY 39: 数组拆分 I

作者: 三猫后端 | 来源:发表于2021-02-16 17:55 被阅读0次

原文地址:LeetCode刷题DAY 39: 数组拆分 I


题目描述

给定长度为 2n 的整数数组nums,将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该最大总和 。

python实例展示

思路:排序

假设每一对表示为(an, bn) ,且an<=bn,我们要求的是

也就是所有a的和。因此这道题目的关键是在于如何将数组进行分对,以尽可能把较大的数值保留下来。从上述公式可知,最大的值一定在b集合中,但我们应把第二大的值保留在a集合中,以此类推。所以我们可以将数组由小到大进行排序,元素依次归位a、b集合,我们只需将从第一个元素起,所有的元素加起来,就是最后要返回的结果。


往期推荐:

XGBoost(二):R语言实现

基于物品的协同过滤python案例演示

R语言爬虫与文本分析

图片相似度识别:pHash算法

相关文章

网友评论

    本文标题:LeetCode刷题DAY 39: 数组拆分 I

    本文链接:https://www.haomeiwen.com/subject/npavxltx.html