18 四数之和
1. 问题描述: 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意: 答案中不可以包含重复的四元组。 示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ] 2. 思路分析: ① 根据题目可以知道我们可以取出数组的任意四个字母,将这四个字母加起来的和判断一下是否与目标值target相等,对于数组中的数字,我们可以取也可以不取,所以我们可以使用递归来求解,存在着两个平行状态,但是后面发现当求出结果之后去重很麻烦,很难判断当前满足条件的四个数字与之前的集合是否存在重复,所以没有采取这种方法 ② 在领扣的题解中,发现有一个不错的思路,使用的是四个指针a, b, c, d的做法,分别指向四个元素,首先是要对数组中的元素进行排序,排序的目的是为了之后判断取出的元素是否存在重复,在开始的时候令a指向数组的第一个元素,b = a + 1为a下一个元素,c = b + 1为b下一个元素,d指向的是最末尾的元素,判断nums[a]+nums[b]