题目介绍
![](https://i-blog.csdnimg.cn/direct/701e88f960464a729c8c8ff2c6c24c57.png)
解题代码
注意事项及问题
这里主要解释一下为什么排序后从二分之n开始划分,首先要搞清楚,在本题的条件下,每个元素最多只能配对一次,也就是说,整个规模为n的数组,最多只能有2/n个配对。在这个前提条件下,我们可以假设一个极端情况,1,2,3,4,5,333,444,555,666,777。在这种情况下,我们可以非常明显的看出配对数量为5。
大家对于为什么从2/n开始最优的疑问可能就是考虑在前半段中发生配对时,是不是配对数会高一些。我们以这题为例明显1可以与以后的每个元素配对,这时我们假设他与4匹配,然后我们脑海里两个指针指向1,4,然后对这两个指针向后平移,可以看出当指向1的指针指向3时,指向4的指针指到333,但是这时只剩下后面四个元素,且后面四个元素都是无法配对的。总结起来就是,小的能和前半部分配对那就一定能和后半部分配对,而后半部分又保留了与前半部分配对的数量,所以这种二分分配方式不会影响最终结果。
当然这只是一种情况,但是大家可以用这种指针平移的方式在类似数组中滑动尝试一下,就会发现2/n处分开匹配的妙处。