网站设计规划的创意,wordpress+粘贴表格,淘宝做导航网站有哪些功能,做网站一定要实名认证吗这里是阿川的博客#xff0c;祝您变得更强 ✨ 个人主页#xff1a;在线OJ的阿川 #x1f496;文章专栏#xff1a;OJ刷题入门到进阶 #x1f30f;代码仓库#xff1a; 写在开头
现在您看到的是我的结论或想法#xff0c;但在这背后凝结了大量的思考、经验和讨论 目录 1…
这里是阿川的博客祝您变得更强 ✨ 个人主页在线OJ的阿川 文章专栏OJ刷题入门到进阶 代码仓库 写在开头
现在您看到的是我的结论或想法但在这背后凝结了大量的思考、经验和讨论 目录 1. 题目介绍2. 题目拆解3. 具体详情4. 具体代码 1. 题目介绍 难度中 题目练习四数之和 题目信息给你一个由 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所示 图1 举个例子 2. 题目拆解 本质上观察规律双指针遍历判断 特点是在组合搭配中有一定规律 解决方法双指针算法如图2所示 图2 双指针 3. 具体详情 1. 先进行排序 2. 依次固定一个数并确保固定时若是重复固定值时跳过 3. 在固定数后面的区间内利用三数之和找到三个数然后再固定一个数在固定的这个数后面的区间内利用双指针找到两个数使这两个数的和等于目标值减去两个固定值并遍历完整个数组并确保当双指针和固定值是重复值时跳过 4. 最后返回数组 4. 具体代码
class Solution {
public:vectorvectorint fourSum(vectorint nums, long long target){// 进行排序sort(nums.begin(), nums.end());vectorvectorint cur;int n nums.size();// 第1层固定值for(int i 0; i n; ){// 第2层固定值for(int j i 1; j n; ){int left j 1, right n - 1;long long aim target - nums[i] - nums[j];// 双指针算法具体实现while(left right){int sum nums[left] nums[right];// 三种情况if(sum aim) right--;else if(sum aim) left;else{cur.push_back({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--;}}j;// 第2层固定值去重while(j n nums[j] nums[j - 1]) j;}i;// 第1层固定值去重while(i n nums[i] nums[i - 1]) i;}return cur;}
};5. 夹带私货
若你能看到看到这篇文章且能看到这则说明你我有缘留个关注吧后面还会接着计算机408、底层原理、开源项目、以及数据、后端研发相关、实习、笔试/面试、秋招/春招、各种竞赛相关、简历相关、考研、学术相关……祝你我变得更强 好的到此为止啦祝您变得更强 道阻且长 行则将至个人主页在线OJ的阿川大佬的支持和鼓励将是我成长路上最大的动力