码迷,mamicode.com
首页 > 编程语言 > 详细

在数组中找出x+y+z=0的组合

时间:2016-11-21 12:10:44      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:组合   转化   两个指针   strong   16px   复杂度   nbsp   bsp   存在   

就是找x+y=-z的组合

转化为找出值为-z满足x+y=-z的组合

解法一:

为了查找,首先想到排序,为了后面的二分,nlogn,

然后x+y的组合得n^2的复杂度,加上查找是否为-z,复杂度为nlogn + n^2 * logn

 

解法二:

还是先从小到大排序 nlogn

假设数组排序后为 a b c d e f

我们还是要找x+y=-z

会发现-z存在的可能只能是a+f和b+e,不会存在a+e和b+f这种情况(这里很重要,保证了算法的正确性),所以两个指针一头一尾往中间扫,肯定能找出来

fist + last < sum 则将fist++,如果fist + last > sum,则last--。这样的话只要对每个进行这种查找就好了

所以复杂度为nlogn+n*n

在数组中找出x+y+z=0的组合

标签:组合   转化   两个指针   strong   16px   复杂度   nbsp   bsp   存在   

原文地址:http://www.cnblogs.com/juandx/p/6084911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!