在数组中找出x+y+z=0的组合
Posted juandx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在数组中找出x+y+z=0的组合相关的知识,希望对你有一定的参考价值。
就是找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的组合的主要内容,如果未能解决你的问题,请参考以下文章
ABC240G Teleporting Takahashi[组合数学]
ABC240G Teleporting Takahashi[组合数学]
ABC240G Teleporting Takahashi[组合数学]
三个正数 x、y、z 的组合,使得 x + y、x - y、y + z、y - z、x + z 和 x - z 是完全平方