Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.
Note:
Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie, a ≤ b ≤ c ≤ d)
The solution set must not contain duplicate quadruplets.
For example, given array S = {1 0 -1 0 -2 2}, and target = 0.
A solution set is:
(-1, 0, 0, 1)
(-2, -1, 1, 2)
(-2, 0, 0, 2)
解答
基本思想:计算出两两相加的结果,构成一个有序数组,将问题转化为一个 2Sum 问题
使用一个 HashMap 保存 (sum, (i,j)),其中 (i, j) 是相加为 sum 的两个数在原数组中的下标