网站被墙的原因,花钱推广的网络平台,福州企业网站建站系统,wordpress采集插件怎么用目录
力扣18. 四数之和
解析代码 力扣18. 四数之和
难度 中等
给你一个由 n 个整数组成的数组 nums #xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] #xff08;若两个四元组元素一一对应…目录
力扣18. 四数之和
解析代码 力扣18. 四数之和
难度 中等
给你一个由 n 个整数组成的数组 nums 和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] 若两个四元组元素一一对应则认为两个四元组重复 0 a, b, c, d na、b、c 和 d 互不相同nums[a] nums[b] nums[c] nums[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 [2,2,2,2,2], target 8
输出[[2,2,2,2]]提示
1 nums.length 200-10^9 nums[i] 10^9-10^9 target 10^9
class Solution {
public:vectorvectorint fourSum(vectorint nums, int target) {}
}; 解析代码 解法排序 双指针 算法思路依次固定⼀个数 a在这个数 a 的后面区间上利用上力扣15. 三数之和找到三个数使这三个数的和等于 target - a 即可。 class Solution {
public:vectorvectorint fourSum(vectorint nums, int target) {vectorvectorint ret;sort(nums.begin(), nums.end());int n nums.size();for(int a 0; a n; ){for(int b a 1; b n; ){long long target2 (long long)target - nums[a] - nums[b];int left b 1, right n - 1;while(left right){if(nums[left] nums[right] target2){left;}else if(nums[left] nums[right] target2){--right;}else{ret.push_back({nums[a],nums[b],nums[left],nums[right--]});while(left right nums[left] nums[left-1]){left;}while(left right nums[right] nums[right1]){--right;}}}b;while(b n nums[b] nums[b-1]){b;}}a;while(a n nums[a] nums[a-1]){a;}}return ret;}
};