题目

给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。
返回该 最大总和 。
示例 1:
输入:nums = [1,4,3,2]
输出:4
解释:所有可能的分法(忽略元素顺序)为:

  1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3
  2. (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3
  3. (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4
    所以最大总和为 4
    示例 2:
    输入:nums = [6,2,6,5,1,2]
    输出:9
    解释:最优的分法为 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2 + 6 = 9
    提示:
    1 <= n <= 10^4
    nums.length == 2 * n
    -10 ^4 <= nums[i] <= 10 ^4
    来源:力扣(LeetCode)

解题思路

  一个偶数个数的数组两两对比小的胜出,那么这个数组的最大值肯定保不住,如何发挥这个最大值的优势呢?最好的方法就是把这个最大值和第二大的值分在一组,这样这个最大值还能捞一个老二出来,老大和老二对比结束后,剩下的数组元素可以看成是一个新的数组,这样又会面临老大老二的问题,我们还是以同样的方法进行处理。
  按照以上思路的处理则需要先对数组进行排序,两两组成一对然后取第一个值求和即可。

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

LeetCode简单题之数组拆分 I相关推荐

  1. LeetCode简单题之数组形式的整数加法

    题目 对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组.例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]. 给定非负整数 X 的数组形式 A,返回整数 X+ ...

  2. LeetCode简单题之数组异或操作

    题目 给你两个整数,n 和 start . 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length . 请返回 nums 中所有元素 ...

  3. LeetCode简单题之数组中的字符串匹配

    题目 给你一个字符串数组 words ,数组中的每个字符串都可以看作是一个单词.请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词. 如果你可以删除 words[j] 最左侧和/或最 ...

  4. LeetCode简单题之数组序号转换

    题目 给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号. 序号代表了一个元素有多大.序号编号的规则如下: 序号从 1 开始编号. 一个元素越大,那么序号越大.如果两个元素相等, ...

  5. LeetCode简单题之数组的度

    题目 给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值. 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度. ...

  6. LeetCode简单题之数组元素积的符号

    题目 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 . 如果 x 是负数,返回 -1 . 如果 x 是等于 0 ,返回 0 . 给你一个整数数组 nu ...

  7. LeetCode简单题之数组中两元素的最大乘积

    题目 给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值. 请你计算并返回该式的最大值. 示例 1: 输入:nums = ...

  8. LeetCode简单题之数组中第 K 个独一无二的字符串

    题目 独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串. 给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字符串 .如果 少于 k 个独一无二的字符 ...

  9. LeetCode简单题之数组的相对排序

    题目 给你两个数组,arr1 和 arr2,arr2 中的元素各不相同,arr2 中的每个元素都出现在 arr1 中. 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相 ...

最新文章

  1. poj1651(矩阵连乘)
  2. 弱网测试用什么农_弱网测试(一)
  3. 关于网络上的各种mysql性能测试结论
  4. [MySQL FAQ]系列 -- 如何直接覆盖 MYI MYD 文件
  5. appium的desired_caps参数
  6. SDOI2014 旅行
  7. 论文中地层岩性和岩组描述总结
  8. WARNING: IPv4 forwarding is disabled. Networking will not work.
  9. Flex3 DataGrid拖拽到ClumnChart动态显示图表
  10. pandas小记:pandas基本设置
  11. 【转】进程死锁及解决方法
  12. php支持的协议与封装协议
  13. web开发需要注意/n的问题
  14. 运筹学动态规划逆序解法_运筹学第七章 动态规划讲解.ppt
  15. H.323-SIP信令网关
  16. 千人千面算法java实现_推荐算法-recommend_system
  17. OpenLayers 6 代码绘制/draw交互组件绘制两种方式绘制椭圆过程详解
  18. 学习Spherical Harmonics的简记
  19. 【银河麒麟】终端安装微信代码
  20. C语言_写一个函数:求给定数组的中位数

热门文章

  1. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)
  2. curl模拟post请求
  3. RNN,LSTM,GRU基本原理的个人理解重点
  4. LeetCode中等题之根据字符出现频率排序
  5. 摄像头ISP系统原理(中)
  6. 高精地图中导航标识识别
  7. Linux crontab 命令基本说明
  8. 1977中文版_历年星云、雨果获奖长篇中文版汇总
  9. css 伪元素::after与::before的使用
  10. Kotlin setText 使用