Array Partition I(leetcode)
来源:互联网 发布:potplayermini优化版 编辑:程序博客网 时间:2024/06/05 08:31
Array Partition I
- Array Partition I
- 题目
- 分析
- 解决
- sort函数
- 利用multiset
题目
leetcode题目
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: 4Explanation: 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].
分析
题目要求在给定的数组里面两两配对,取其中的最小值,使得这些最小值加起来的sum
达到最大值。这样,我们可以尽可能地让小的数两两配对,剩下大的数再进行配对,才能够达到要求。
如果取一大一小的数两两配对,由于是取其中的最小值,所以大的数就会被抛弃,而小的数被留下来,对结果的贡献不大。
因此,我们先将数组进行排序,然后依次两两配对,就可得到结果。
解决
1.sort()函数
在C++中,可用sort()函数直接对vector中的元素进行排序。
class Solution {public: int arrayPairSum(vector<int>& nums) { int result = 0; sort(nums.begin(), nums.end()); for (int i = 0; i < nums.size(); i += 2) { // 数两两配对,因此每次i需要增加2 result += nums[i]; } return result; }};
2. 利用multiset
利用multiset对插入数据的处理以实现对数组的排序,但是性能不好。
class Solution {public: int arrayPairSum(vector<int>& nums) { int result = 0; multiset<int> temp; for (int i = 0; i < nums.size(); i++) { temp.insert(nums[i]); } for (multiset<int>::iterator it = temp.begin(); it != temp.end(); ) { result += (*it); it++; it++; } return result; }};
阅读全文
0 0
- LeetCode Array Partition I
- leetCode---Array Partition I
- Array Partition I(leetcode)
- Leetcode-Array Partition I
- leetcode 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
- Python help
- 聚簇索引与非聚簇索引的区别
- MySQL 之三范式
- 简单实现对象池
- 十分钟看懂图像语义分割技术
- Array Partition I(leetcode)
- bzoj3791 作业
- PyTorch:Mark一下找到的一些入门资源合集
- Java数据结构与算法解析(十三)——优先级队列
- 八种通用寄存器
- Request 对象和Response 对象
- 图片轮播不带圆点
- Hibernate之HQL查询小Demo
- 10的阶乘