18. 四数之和

简介: 18. 四数之和

题目描述

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):


0 <= a, b, c, d < n

a、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

-109 <= nums[i] <= 109

-109 <= target <= 109


解题思路

同2数,3数之和一样。固定一个,移动另一个。


4数之和那就是,固定2个,然后用双指针遍历其他的。


注意对每个数都需要进行去重操作。

代码

class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        sort(nums.begin(),nums.end());
        vector<vector<int>> ret;

        int n= nums.size();
        for(int a=0;a<n;a++)
        {
            for(int b=a+1;b<n;b++)
            {
                int c=b+1,d=n-1;
                while(c<d)
                {
                    //越界处理
                    long long sum=(long long)nums[a]+nums[b]+nums[c]+nums[d];
                    if(sum>target) d--;
                    else if(sum<target) c++;
                    else 
                    {
                        ret.push_back({nums[a],nums[b],nums[c],nums[d]});
                        //c、d去重
                        while(c+1<n&&nums[c]==nums[c+1]) c++;
                        while(d-1>=0&&nums[d]==nums[d-1]) d--;

                        //下一个
                        c++;d--;
                    }
                }
                //b去重
                while(b+1<n&&nums[b]==nums[b+1]) b++;
            }
            //a去重
            while(a+1<n&&nums[a]==nums[a+1]) a++;
        }

        return ret;
    }
};
相关文章
|
1月前
|
SQL JavaScript 前端开发
两天真实体验,Claude Code+ MiniMax-M3 比 CC+ DeepSeek编程强太多
Claude Code 账号彻底被封之后,一直在寻找替代方案。第一选择是 CC + DeepSeek,编程能跑,但低级问题不断——编译错误、yaml 反复出错。这段经历之前专门写过:[《Claude Code + DeepSeek 的踩坑记录》](https://my.oschina.net/jee
736 0
两天真实体验,Claude Code+ MiniMax-M3 比 CC+ DeepSeek编程强太多
|
2月前
|
存储 人工智能 弹性计算
基于阿里Qoder的实训案例荣获2026全国高校程序设计教育大会特等奖
复旦大学赵卫东老师主持的“基于阿里Qoder开发个人博客系统”实训案例,获2026全国高校程序设计教育大会特等奖。案例融合通义灵码与千问API,覆盖AI写作、分析、部署全流程, exemplifies AI时代产教融合新范式。(239字)
373 3
|
2月前
|
运维 安全 搜索推荐
网站被挂黑链、遭遇恶意攻击怎么办?一文搞定应急清理+永久防护
本文详解网站被挂黑链、篡改、攻击的完整应对方案:从识别危害、5步紧急止损,到彻底清除后门木马、数据库恶意代码,再到程序层、服务器层、防护工具三层加固。破除“只删黑链”误区,强调备份、强密码、漏洞修补与常态化运维,助站长根治黑链反复、排名暴跌、浏览器拦截等顽疾。(239字)
|
4月前
|
移动开发 小程序 定位技术
php开发的社交同城交友系统架构分享(附源码演示)交友成品源码搭建简易步骤解析!
基于PHP+UniApp的同城交友系统,低成本高效率,支持小程序/H5/APP多端一键部署。涵盖智能匹配、LBS定位、音视频聊天、动态社区及VIP变现等全功能模块,开箱即用,合规安全,是创业者首选落地方案。
372 0
|
4月前
|
存储 人工智能 弹性计算
2026年阿里云有哪些优惠活动?优惠券、云服务器特惠及云产品免费试用活动简介
2026年阿里云的优惠活动,涵盖优惠券、云服务器特惠及免费试用。学生可领300元无门槛券及算礼包,企业享迁云与出海补贴。云服务器方面,提供轻量应用服务器低价抢购、经典长效云服务器特惠及企业级实例折扣。同时,阿里云推出普惠免费试用,覆盖云产品、AI产品及解决方案,助力用户零成本体验。此外,云产品组合购活动以更优价格、优化配置及便捷管理,满足用户多样化需求,构建了从入门到高性能生产的完整优惠体系。
|
8月前
|
存储 编解码 缓存
上传文件卡顿?阿里云点播上传加速技巧全解析
本文系统解析阿里云视频点播上传机制,针对进度停滞、超时失败等问题,分享选型策略、分片上传、并发优化等实战技巧,助力提升上传效率与稳定性。
|
4月前
|
人工智能 JavaScript API
(技术贴)别被全网爆火的OpenClaw骗了!实测2小时,真不适合普通人
别被全网爆火的OpenClaw误导!实测2小时发现:部署卡顿、API成本高(日耗几十至千元)、报错难排查,需懂命令行与调试——它本质是开发者框架,非普通人开箱即用工具。现阶段,等待成熟或选择成熟产品更明智。
639 6
|
5月前
|
安全 API 开发者
2026年 OpenClaw 技能生态测评:从官方源到本土化社区的选型指南
本文基于2026年3月实测,对比分析三大OpenClaw Skill获取方案:国内镜像源(CLI加速但不解决依赖)、可视化本土平台(开箱即用+API验证+安全预审)、官方源(权威但高风险,需“三步验证”)。强调安全准入与权限管控是AI Agent落地前提。
|
5月前
|
人工智能 文字识别 调度
养活OpenClaw这只“大龙虾”的是人,是配置,是算力,不是它自己!
OpenClaw要想摆脱“翻车”困境,最终还是要回归技术本质,大模型下半场,与其说拼的是人还不如说是拼的工程化落地能力,而优质的算力底座,正是工程化落地的核心根基。
|
7月前
|
数据挖掘 中间件 应用服务中间件
阿里云服务器通用算力型u2a实例性能、适用场景与2026年最新活动价格参考
阿里云服务器AMD通用算力型实例u2a实例怎么样?通用算力型实例是阿里云推出的主打高性价比的企业级云服务器实例,u2a是一款基于AMD CPU 平台的通用算力型实例,支持跨平台热迁移与调度能力,兼容多代际 CPU 处理器平台,算力性能超u1实例40%,收费价格则降低9%-22%,具备强劲的价格竞争力,是初创企业的性价比之选。本文为大家介绍u2a实例的性能、适用场景以及2026年截至目前最新的活动价格情况,以供参考。
512 8