leetcode 561 Array Partition I
来源:互联网 发布:java上传图片到ftp 编辑:程序博客网 时间:2024/05/29 18:58
题目来源:LeetCode 561
简单题目分析:
给你2n个数,让你配成n对,并求∑min(ai,bi)的最大值。
思路:
先把这2n个数排好序,然后取下标为偶数的项即可,下面给出证明:
1.定义ans=min(a1,b1)+min(a2,b2)+...+min(an,bn)(所要求的值)
2.不妨假设bi≥ai,则ans=a1+a2+a3+...+an
3.定义Sn=a1+b1+a2+b2+...+an+bn(数列和)
4.定义Di=|ai-bi|=bi-ai,Sd=D1+D2+...+Dn
5.通过恒等变形,得Sn=Sd+2*ans,即ans=(Sn-Sd)/2
6.对于确定的数列,Sn是定值,那么要求ans的最大值,只需要Sd最小,因此原命题成立
附上python超短代码:
class Solution(object): def arrayPairSum(self, nums): """ :type nums: List[int] :rtype: int """ return sum(sorted(nums)[::2])其中nums是列表类型,sorted对nums进行排序,[::2]是取偶数项元素,sum是求和。
阅读全文
0 0
- leetcode#561 Array Partition I
- leetcode-561-Array Partition I
- Leetcode 561: Array Partition I
- 【LeetCode】561 Array Partition I
- [leetcode 561]Array Partition I
- leetcode 561 Array Partition I
- leetcode.561 Array Partition I
- leetcode-561(Array Partition I)
- LeetCode-561 Array Partition I
- Leetcode 561 Array Partition I
- leetcode 561:Array Partition I
- LeetCode 561 Array Partition I
- Leetcode 561:Array Partition I
- Leetcode 561 Array Partition I
- LeetCode[561]Array Partition I
- leetcode 561 Array Partition I
- LeetCode.561 Array Partition I
- Array Partition I[LeetCode 561]
- 蓝桥杯 算法训练 表达式计算 JAVA
- Django-pyodbc的安装
- U-BOOT启动kernel的过程
- kotlin学习Day1:JavaActivity和KotlinActivity对比分析
- 素数判断 Java
- leetcode 561 Array Partition I
- 职业规划
- [调研] 防火墙多出口 对于 内部服务器网络的影响
- |BZOJ 2763|最短路|[JLOI2011]飞行路线
- 十六进制转二进制 Java
- nginx实现tomcat动静分离详解
- 算法竞赛入门经典(第2版)习题4-4 骰子涂色 Uva253
- 快速读取数字程序 Java
- python 日志模块详解