LeetCode-561. Array Partiton I

本文介绍了一种解决LeetCode题目中特定数组分组问题的方法,通过将数组排序并按顺序配对的方式,实现了题目要求的最大和值。文章详细解释了C++代码实现过程,包括如何使用sort()函数对vector排序及获取vector长度。

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=========================//

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值