3Sum
题意
给一个数组,输出所有三个数的组合,使得a+b+c=0,且没有重复的(比如[1, 2, 3], [3, 1, 2]就是算重复的)。
解法
为了防止过多的重复,我们先将整个数组进行排序,然后我用 mp[x]来记录x出现在数组中的最靠右边的位置,这样尽量使得a+b+c=0中的a, b, c是递增的,假如最靠右边的b的位置还是小于c的,那么我们就不要这个组合。枚举的过程中只要枚举两个数即可,第三个数我们用mp[]来观察是否存在。最后再去一次重复即可。
代码
|
|
Nothing is too difficult, if you put your heart into it.
给一个数组,输出所有三个数的组合,使得a+b+c=0,且没有重复的(比如[1, 2, 3], [3, 1, 2]就是算重复的)。
为了防止过多的重复,我们先将整个数组进行排序,然后我用 mp[x]来记录x出现在数组中的最靠右边的位置,这样尽量使得a+b+c=0中的a, b, c是递增的,假如最靠右边的b的位置还是小于c的,那么我们就不要这个组合。枚举的过程中只要枚举两个数即可,第三个数我们用mp[]来观察是否存在。最后再去一次重复即可。
|
|