网站建设最简单的教程,网站建设营销制作设计,长沙模板网站建设企业,龙岗召开企业服务大会给你一个由 n 个整数组成的数组 nums #xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] #xff08;若两个四元组元素一一对应#xff0c;则认为两个四元组重复#xff09;。
解题思路#xff1a…给你一个由 n 个整数组成的数组 nums 和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] 若两个四元组元素一一对应则认为两个四元组重复。
解题思路
1.与三数之和解题思路一样
2.多了一层循环。
public static ListListInteger fourSum(int[] nums, int target) {int length nums.length;int left, right, sum;ListListInteger result new ArrayList();Arrays.sort(nums);for (int i 0; i length; i) {if (nums[i] target nums[i] 0) {return result;}//判断nums[i]是否重复if (i 0 nums[i] nums[i - 1]) {continue;}for (int j i 1; j length; j) {//判断nums[j]是否重复if (j i 1 nums[j] nums[j - 1]) {continue;}left j 1;right length - 1;while (left right) {sum nums[i] nums[j] nums[left] nums[right];if (sum target) {left;} else if (sum target) {right--;} else {result.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));while (left right nums[left] nums[left 1]) {left;}while (left right nums[right] nums[right - 1]) {right--;}left;right--;}}}}return result;}