Description:
Example 1:
Note:
Solution(C++):
算法分析:
其实思路挺简单,说是要将这样数组进行两两分组,然后选取其中最小的值相加,求出最大和值。其实可以反过来思考,要使和值最大,就要保证每对分组中最小值尽可能大,通过例子可以获得提示,要使[1,4,3,2]满足题目要求,那么只有两组数对,其中必有一组含有1,该组数对运算结果必为1,另外一组数组,要让结果最大,只能为3,因为4最大。所以分组结果就是(1.2)(3,4)。思路扩展一下,其实可以让数组从小到大排序,然后,按照(1,2)(3,4)(5,6)(7,8)```(I,i+1)```(2n-1)(2n),这样取数对就可以了。
程序分析:
第一次用LeetCode刷题,还是有许多不适应。选择C++。题目用vector的形式给出了nums,那么就要多使用vector的相关内容。关于vector的系统学习内容可以参考这篇博客:https://www.cnblogs.com/mr-wid/archive/2013/01/22/2871105.html。本题中使用的函数主要有:1.对vector进行排序;2.获取vector的长度。
1. 对vector进行排序:sort()函数。有关sort()函数的使用方法可以参考这篇博客:https://www.cnblogs.com/cj695/p/3863142.html。本题简要说一下:
要实现从小到大排序:
sort(vector.begin().vector.end());
要实现从大到小排序:
bool comp(const int &a,const int &b )
{
return a>b;
}
...
sort(vector.begin(),vector.end(),comp);
引入comp函数中,通过修改int类型,可以实现多种结构体的排序。详情可参考前一博客链接。
2. 获取vector的长度
int length=vector.size();
//=====================BY zy2317878=====================//
//===================博观约取,厚积薄发===================////=========================END=========================//
本文介绍了一种解决LeetCode题目中特定数组分组问题的方法,通过将数组排序并按顺序配对的方式,实现了题目要求的最大和值。文章详细解释了C++代码实现过程,包括如何使用sort()函数对vector排序及获取vector长度。

174

被折叠的 条评论
为什么被折叠?



