<\/span><\/h2>\n\n\n\nGiven an array nums<\/code> of n<\/code> integers, return an array of all the unique<\/strong> quadruplets<\/em> [nums[a], nums[b], nums[c], nums[d]]<\/code> such that:<\/p>\n\n\n\n0 <= a, b, c, d < n<\/code><\/li>a<\/code>, b<\/code>, c<\/code>, and d<\/code> are distinct<\/strong>.<\/li>nums[a] + nums[b] + nums[c] + nums[d] == target<\/code><\/li><\/ul>\n\n\n\nYou may return the answer in any order<\/strong>.<\/p>\n\n\n\n<\/span>Example 1 :<\/strong><\/span><\/h3>\n\n\n\n\nInput: nums = [1,0,-1,0,-2,2], target = 0\r\nOutput: [[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]\n<\/code><\/pre>\n\n\n\n<\/span>Example 2 :<\/strong><\/span><\/h3>\n\n\n\n\nInput: nums = [2,2,2,2,2], target = 8\r\nOutput: [[2,2,2,2]]\n<\/code><\/pre>\n\n\n\n<\/span>Constraints<\/strong><\/span><\/h3>\n\n\n\n1 <= nums.length <= 200<\/code><\/li>-109<\/sup> <= nums<\/code><\/code><\/code>[i] <= 109<\/sup><\/code><\/code><\/li>-109<\/sup> <= target <= 109<\/sup><\/code><\/li><\/ul>\n\n\n\nNow, let’s see the code of 18. 4Sum<\/strong> – Leetcode Solution.<\/p>\n\n\n\n<\/span>4Sum<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong> – Leetcode Solution<\/span><\/h1>\n\n\n\n<\/span>18. 4Sum<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong> – Solution in Java<\/strong><\/span><\/h3>\n\n\n\nclass Solution {\n public List<List<Integer>> fourSum(int[] nums, int target) {\n int n = nums.length;\n Arrays.sort(nums);\n List<List<Integer>> result = new ArrayList<>();\n for (int i = 0; i < n; ++i) {\n if (i > 0 && nums[i - 1] == nums[i]) continue;\n threeSum(nums, i + 1, n - 1, target - nums[i], result);\n }\n return result;\n }\n \n private void threeSum(int[] nums, int lo, int hi, int target, List<List<Integer>> result) {\n int n = nums.length;\n int subLen = hi - lo + 1;\n for (int i = lo; i <= hi; ++i) {\n if (i > lo && nums[i] == nums[i - 1]) continue; \n int j = i + 1, k = hi;\n int t = target - nums[i];\n while (j < k) { \n if (nums[j] + nums[k] < t) {\n ++j;\n } else if (nums[j] + nums[k] > t) {\n --k;\n } else { \n result.add(Arrays.asList(nums[lo - 1], nums[i], nums[j], nums[k]));\n ++j;\n --k;\n while (j < k && nums[j] == nums[j - 1]) j++; \n while (j < k && nums[k] == nums[k + 1]) k--; \n }\n }\n }\n}\n}<\/pre>\n\n\n\n<\/span>