题目要求:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。
思路分析:本题和三数之和思路类似,都不允许重复,可以使用双指针法,只需要在三数之和的基础上再套一层for循环即可。与三数之和不同的是剪枝时候的判断,由于本题要求并不是相加之和为0,而是给出一个目标值,所以排序后只判断当前数若大于目标就结束循环是不正确的,因为两个负数相加就会更加小,所以剪枝的逻辑应该加上当前值已经大于0。而其他部分与三数之和基本相同,且与暴力解法相比,双指针法时间复杂度由O(n^4)降为O(n^3)。
leetcode实战:
代码实现: