本文共 1073 字,大约阅读时间需要 3 分钟。
题目描述
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。
示例 1:
输入:nums = [1,0,-1,0,-2,2], target = 0
输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]] 示例 2:输入:nums = [], target = 0
输出:[]提示:
0 <= nums.length <= 200
-109 <= nums[i] <= 109 -109 <= target <= 109来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/4sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C++
class Solution { /* 和15题相同思路,排序,循环遍历,双指针。 时间复杂度O(n^3) */public: vector> fourSum(vector & nums, int target) { vector > res; if(nums.size()<4) return res; sort(nums.begin(),nums.end()); int len=nums.size(); for(int i=0;i 0 && nums[i]==nums[i-1]) continue; //特殊情况 if(nums[i]+nums[i+1]+nums[i+2]+nums[i+3]>target) break; if(nums[i]+nums[len-1]+nums[len-2]+nums[len-3] i+1 && nums[j]==nums[j-1]) continue; if(nums[i]+nums[j]+nums[j+1]+nums[j+2]>target) break; if(nums[i]+nums[j]+nums[len-1]+nums[len-2]